Я не могу воспроизвести это на моей системе, Ubuntu Hardy.Вот пример:
/tmp$ mkdir /tmp/sbuzz
/tmp$ cd /tmp/sbuzz
/tmp/sbuzz$ echo '<?php exit(1); ?>' >script_a.php
/tmp/sbuzz$ cat >script_b.php
<?php
system('php script_a.php', $return);
var_dump($return);
?>
/tmp/sbuzz$ php script_b.php
int(1)
/tmp/sbuzz$ echo '<?php exit(2); ?>' >script_a.php
/tmp/sbuzz$ php script_b.php
int(2)
/tmp/sbuzz$
Код выхода 0 означает успешное выполнение программы, поэтому может показаться, что вы запускаете неправильный скрипт script_a.php или, возможно, исполняемый файл "php" не выполняет то, что нужновы ожидаете?Возможно, у вас есть скрипт php, который находится у вас на пути до переводчика?Что сообщает "какой php"?В моей системе написано "/usr/bin/php".
Если PHP не может найти скрипт, он завершится с 1, например:
/tmp/sbuzz$ cat script_b.php
<?php
system('php doesnt_exist_script_a.php', $return);
var_dump($return);
?>
/tmp/sbuzz$ php script_b.php
Could not open input file: doesnt_exist_script_a.php
int(1)
/tmp/sbuzz$
В этом случаеЯ изменил script_b.php, чтобы попытаться запустить скрипт, который не существует, и я получаю код выхода 1 (он должен быть 2, если он завершился успешно, потому что я изменил script_a выше), но он также показывает ошибку, котораяпрограмма не может быть запущена.
Возможно, вы захотите изменить ее, чтобы конкретно запустить полный путь к исполняемому файлу PHP:
system('/usr/bin/php script_a.php')
или также полный путь к сценарию, какхорошо:
system('/usr/bin/php /tmp/sbuzz/script_a.php')
Вы также можете попробовать выполнить программу, которая будет возвращать 1, точно так же, как другую точку данных, например:
system('false')
system('bash -c "exit 69"')
Возможно, вы захотите попробовать выйтикод, отличный от 1, который является общей ошибкой.Вот почему я сделал «выход 69» выше.«false» завершится с 1.
Также, конечно, попробуйте запустить скрипт script_a.php напрямую:
/tmp/sbuzz$ php script_a.php
/tmp/sbuzz$ echo $?
2
/tmp/sbuzz$
«$?»код завершения последней команды запуска в командной строке.