5

私は次のPHPで実行しています:

$res = proc_open($cmd, $descriptorspec, $pipes, "C:\\xampp\htdocs\\",null,array('bypass_shell'=>true));

問題は、次のエラーが発生することです。

Warning: proc_open(): CreateProcess failed, error code - 3

エラーの意味はどこで確認できますか?

PS:WindowsServer2007上にあります。SP2。ユーザーは管理者であり、完全なアクセスです。PHPはバージョン5.3.1です

4

1 に答える 1

10

Windowsでは、CreateProcessは実際にはエラーコードを返しません。代わりに、GetLastErrorを使用してCreateProcessが失敗した場合の詳細を検索し、FormatMessageを使用してGetLastErrorのエラーコードを適切な説明に変換します。(GetLastErrorのエラーコードは、このリストを使用してデコードすることもできます)

proc_open()のソースを見ると、PHPは実際に失敗時にGetLastError()を実行しており、ログに記録されるエラーコードは、CreateProcess(BOOLを返す可能性は低い)からではなく、GetLastError()からの戻りです。 3になる:))

proc_openはこれを使用してメッセージをダンプすることに注意してください。

php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateProcess failed, error code - %u", dw);

... 3の前にある「-」は単なるハイフンであり、マイナス記号ではありません。したがって、エラーコード3が表示されます。これは、そのリストによると、 「システムは指定されたパスを見つけることができません。」という意味です。

于 2011-02-14T09:38:04.053 に答える