exec () не работает должным образом в PHP - PullRequest
3 голосов
/ 30 июля 2009

У меня есть сценарий PHP, в котором мне нужно выполнить сценарий оболочки 'add_article.sh', который читает файл параметров и добавляет содержимое статьи новостей в поисковый индекс (Lemur / Indri).

Само выполнение скрипта add_article.sh (из оболочки) работает отлично, но, запустив его из скрипта php, я получаю следующее:

$blah = exec("./add_article.sh", $out, $ret_val);

echo $out . "<BR />";
echo $ret_val . "<BR />";

Это производит

Массив
255

Он находится в правильном каталоге и не работает даже с абсолютным путем. Я использую точно такой же формат в другой функции в том же файле, который выполняет другой сценарий в том же каталоге, и все в порядке.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 30 июля 2009

$out должен быть массивом. Вам, вероятно, следует print_r() или var_dump(), чтобы увидеть, что возвращается из сценария; возможно, он говорит вам, что идет не так.

В общем, вероятно, существует некоторая зависимость от окружения, которая не удовлетворяется, когда PHP запускает скрипт. Это особенно распространено, если он запускается изнутри Apache.

1 голос
/ 30 июля 2009

Попробуйте:

$blah = exec("./add_article.sh", $out, $ret_val);

print_r($out);
echo '<br />';
echo $ret_val . "<br />";
1 голос
/ 30 июля 2009

Вы проверили права на выполнение вашего сценария оболочки? Apache работает как пользователь с очень ограниченными правами в большинстве операционных систем, так что это может быть причиной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...