警告:exec():无法在PHP中进行分叉

时间:2011-12-12 13:21:26

标签: php windows cmd

我在Windows Server 2008上使用php 5 apache,我已禁用IIS。

我在我的PHP脚本中使用exec命令,它运行正常 但是今天我收到了一个错误:

Warning: exec(): Unable to fork 

我向cmd.exe文件夹中的C:\Windows\System32授予了权限 但这并没有解决问题。

3 个答案:

答案 0 :(得分:4)

具体是哪些权限给了谁? 可能不适合用户..

运行这个php脚本:

echo 'Script is executed by: ' . get_current_user() . getmygid();

它会告诉您哪个用户正在运行PHP脚本,因此会向哪个用户授予cmd.exe的权限。

答案 1 :(得分:3)

在64位窗口(例如服务器2008)中,有一个名为c:\ windows \ syswow64的文件夹,其中包含32位应用程序所需的所有可执行文件/ dll。安装在64位计算机上。 确保您所需的32位.exe / dll等放在该文件夹中。 如果你找不到它,你将不得不放置32位版本的所需.exe / DLL 所以这可以被yopur app / process使用。

现在,当您的32位应用程序/进程执行时,Windows将自动重定向您的进程以在syswow64文件夹中执行所需的应用程序。

希望这可以解决您的兼容性问题。

答案 2 :(得分:2)

我自己有这个问题,但最终能够解决它。问题是由于我默认将cmd.exe意外设置为“以管理员身份运行”。我说“意外”,因为我以为我只在我的任务栏上设置了快捷方式的兼容性设置,但事实证明它设置了.exe本身的兼容性。无论如何,我通过删除注册表项来禁用它:

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

这样做之后,一切都重新开始了。