ошибка при выполнении сценария оболочки в PHP - PullRequest
0 голосов
/ 19 августа 2009

Я пытаюсь выполнить команду оболочки через:

<php echo shell_execute("tac /home/kusmuk/access-logs/kusmuk.org"); ?>

Но это не дает никакого выхода. В чем может быть причина?

Хотя это не работает, следующие строки работают как положено:

<php echo shell_execute("ls -al triogrup.com"); ?>
//outputs: -rw-r----- 2 root kusmuk 28640 Aug 19 17:44 kusmuk.org

<php echo shell_execute("pwd"); ?>
//outputs: /home/kusmuk/public_html

Ответы [ 2 ]

2 голосов
/ 19 августа 2009

Хороший совет Грега. Скорее всего, у вас возникнет какая-то проблема с разрешениями.

Однако я бы сказал, что по возможности лучше избегать запуска системных вызовов из PHP. Отладка может быть трудной, и если вы передаете параметры, очень легко сделать дыры в безопасности. Нативный PHP-код намного проще в обращении.

'tac' достаточно прост, чтобы вы могли делать это нормально из PHP. Например, триальная версия, которая выплевывает весь файл за один раз:

$log= file_get_contents('/home/kusmuk/access-logs/kusmuk.org');
echo implode("\n", array_reverse(explode("\n", $log)));
2 голосов
/ 19 августа 2009

Попробуйте это:

echo shell_exec("tac /home/kusmuk/access-logs/kusmuk.org 2>&1");

Он перенаправит stderr на stdout, так что, надеюсь, вы должны понять, почему он не работает

...