我在Windows Server 2008上使用php 5 apache,我已禁用IIS。
我在我的PHP脚本中使用exec命令,它运行正常 但是今天我收到了一个错误:
Warning: exec(): Unable to fork
我向cmd.exe
文件夹中的C:\Windows\System32
授予了权限
但这并没有解决问题。
答案 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
这样做之后,一切都重新开始了。