2011-02-14 65 views
5

我在PHP運行以下:我在哪裏可以找到CreateProcess錯誤代碼的詳細信息?

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

問題是,它提供了以下錯誤:

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

我在哪裏可以找出錯誤意味着什麼?

PS:它位於Windows Server 2007 SP2上。用戶是管理員,已完成訪問。 PHP是版本5.3.1

+2

Plus een vir die username。 – McGafter 2013-07-03 21:13:36

回答

8

在Windows中,CreateProcess實際上並不返回錯誤代碼。如果CreateProcess失敗,請使用GetLastError來查找更多詳細信息,然後使用FormatMessage將GetLastError中的錯誤代碼轉換爲正確的描述。 (來自GetLastError的錯誤代碼也可以使用this list解碼)

查看proc_open()的源代碼,PHP實際上是在發生故障時爲您執行GetLastError(),並且它記錄的錯誤代碼是從GetLastError函數(),而不是從CreateProcess的返回(返回BOOL,不太可能是3 :))

注意proc_open使用此轉儲消息:

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

...等等那個「 - 」你在3之前就是連字符而不是減號。您因此得到錯誤代碼3,根據that list意味着「系統找不到指定的路徑」。

+1

我如何在PHP中做到這一點? – Tjorriemorrie 2011-02-14 09:44:40

相關問題