1

exec() コマンドが機能しなくなりました。Dreamhost Apache サーバーの PHP スクリプトから exec() を呼び出しています。

以下はテストスクリプトです:

$disabled = explode(', ', ini_get('disable_functions'));
if (in_array('exec', $disabled)) 
    echo 'exec is in array of disabled functions';
else
    echo 'exec is NOT in array of disabled functions';
echo '</br> exec(ls): </br>';
$command = 'ls';
exec($command,$output,$returnvar);
echo '</br> output is: </br>';
var_dump($output);
echo '</br> return var is: </br>';
var_dump($returnvar);

出力は次のとおりです。

exec is NOT in array of disabled functions
exec(ls):

output is:

array
  empty


return var is:

int 1

IMHO、これは私のシステムで exec() が有効になっていることを示しています。$return_var は 1 に設定されており、Google はこれが「小さな問題」を示していることを保証します。

ここで何が問題になる可能性がありますか? exec() が機能しないのはなぜですか?

4

2 に答える 2

0

パスの問題である可能性が高いため、絶対パスを使用してみてください

$command = '/path/to/ls'; // /bin/ls だと思います

コマンドが見つからない場合、通常は空の結果が得られます (別の方法でエラー出力をキャプチャする必要があります)。

于 2012-06-27T18:35:23.523 に答える
0

これは、パスの問題であるか、アクセスしようとしているコマンドにアプリがアクセスできない可能性があります。

2>&1exec コマンドの最後に追加して、出力を確認します。おそらくこれにより、コマンドの実行を妨げているものを確認できます。 2>&1OSにSTDERRをSTDOUTに送信するように指示します。

たとえば、代わりに

exec('ls');

試す

exec('ls 2>&1');
于 2013-10-09T12:15:08.140 に答える