39

以下は、成功せずに実行しようとしたコマンドです。

exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess');

最後に die() を追加すると、エラーがあることがわかります。

exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess') or die('what?!');

上記の exec() ステートメントでは、パーミッションの問題がエラーの原因ですが、PHP はそれを表示していません。発生しているエラーをPHPからどのように表示しますか?

4

7 に答える 7

19

これは、いくつかのシナリオでうまくいきました:

 ob_start();
 exec($cmd . " 2>&1", $output);
 $result = ob_get_contents();
 ob_end_clean();
 var_dump($output);

" 2の間のスペースが重要

于 2017-04-13T08:53:11.700 に答える
18

オプションの 2 番目のパラメーターを渡すことで、 exec 関数の出力結果を受け取ることができます。

exec('ln -s ' . PLUGIN_DIR . '/.htaccess ' . ABSPATH . '/.htaccess',$output);
var_dump($output);
于 2008-12-06T02:44:55.333 に答える
10

これは私にとってはうまくいきました:コマンドの最後に 2>&1 を追加してください。

ここで見られます: svnコマンドを実行すると、出力にphp exec()がエラーメッセージを返さない

乾杯

于 2015-11-08T20:56:46.990 に答える
7

その2番目のパラメーターでエラーが見つからない場合は、apacheのエラーログを検索できます。たとえば、Ubuntu Server 12.10では、コマンド$tail/var/log/apache2/error.logを使用してPythonスクリプトを実行していました。エラーがそこにしか出力されなかったphpから、それで私はそれを診断することができました。よろしくお願いします。

于 2012-12-01T23:51:29.447 に答える