我在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
答案 0 :(得分: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表示"系统无法找到指定的路径。"。