0

次の方法でシェルコマンドを実行しようとしています:

<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
4

2 に答える 2

2

グレッグのチップは良いです。おそらく、何らかの権限の問題が発生することになります。

ただし、可能であればPHPからシステムコールを起動しないようにすることをお勧めします。デバッグは面倒な場合があり、パラメータを渡す場合、セキュリティホールを作成するのは非常に簡単です。ネイティブPHPコードは、処理がはるかに簡単です。

'tac'は非常に単純なので、PHP内から問題なく実行できるはずです。たとえば、ファイル全体を一度に吐き出すトリバルバージョン:

$log= file_get_contents('/home/kusmuk/access-logs/kusmuk.org');
echo implode("\n", array_reverse(explode("\n", $log)));
于 2009-08-19T15:44:00.380 に答える
2

これを試して:

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

stderr を stdout にリダイレクトするので、機能しない理由がわかるはずです

于 2009-08-19T15:01:20.533 に答える