我在哪里可以找到CreateProcess错误代码的详细信息?

Tjo*_*rie 5 php windows createprocess

我在php中运行以下内容:

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

问题是它给出了以下错误:

Warning: proc_open(): CreateProcess failed, error code - 3
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找出错误的含义?

PS:它在Windows Server 2007. SP2上.用户是管理员,完全访问.PHP是5.3.1版

Mat*_*son 9

在Windows中,CreateProcess实际上不会返回错误代码.相反,如果CreateProcess失败,则使用GetLastError查找更多详细信息,然后使用FormatMessage将错误代码从GetLastError转换为正确的描述.(GetLastError的错误代码也可以使用此列表解码)

查看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,根据该列表的含义,"系统无法找到指定的路径.".