我在哪里可以找到 CreateProcess 错误代码的详细信息?
Posted
技术标签:
【中文标题】我在哪里可以找到 CreateProcess 错误代码的详细信息?【英文标题】:Where can i find CreateProcess error codes' details? 【发布时间】:2011-02-14 09:21:34 【问题描述】:我在php中运行以下:
$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
【问题讨论】:
加上 een vir die 用户名。 【参考方案1】:在 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,它的意思是“系统找不到指定的路径。”。
【讨论】:
@Tjorriemorrie 哎呀,抱歉,没有对 PHP 部分给予足够的关注。我已经用 PHP 方面的情况更新了我的答案,以及解码你的消息意味着什么。以上是关于我在哪里可以找到 CreateProcess 错误代码的详细信息?的主要内容,如果未能解决你的问题,请参考以下文章