3

fork()システムコールを使用しexec()て他のcファイルを実行するファイルをアップロードするPHPスクリプトを作成していますexecl(). 残念ながら、execl() 関数は機能しませんでした。
より詳細には、PHP スクリプトは次のようにexec()関数を実行します。

$output =shell_exec('./app/p1';
echo "<pre>$output</pre>"; ) 

p1.c の実行可能ファイルである p1 を実行し、p1.c プログラムは次のように execl() を呼び出します。

execl("./p2", "./p2", "a.param","test.txt", NULL); 

p2.cの実行ファイルであるp2を実行します。その結果、p1.c の execl() は実行されず、p2.c も実行されません。助言がありますか。

4

1 に答える 1

0

shell_execドキュメントに記載されているように、この関数はsafe_mode、PHP 構成で無効になっている場合にのみ有効になります。

これを無効にするには ( PHP 5.4 より前の場合のみ)、次の行を に含める必要がありますphp.ini

safe_mode = Off

別の考えられる問題は、現在のパスに起因する可能性があります。./app/p1相対パス (および)を使用してバイナリを呼び出しています./p2。これらのバイナリが現在の作業ディレクトリにあることを確認してください。

この問題を解決するには、どちらの場合もファイルのフル パスを使用するだけです。

于 2014-05-28T07:01:27.303 に答える