2011-12-12 56 views
4

我在Windows Server 2008上使用php 5 apache,我禁用了IIS。警告:exec():无法在PHP中分叉

我M在我的PHP脚本中使用exec命令,它工作正常 但今天,我得到了一个错误:

C:\Windows\System32文件夹 给权限cmd.exe但这并没有解决问题。

回答

3

在64位窗口(例如server 2008)中,有一个名为c:\ windows \ syswow64的文件夹,其中包含32位应用程序所需的所有可执行文件/ dll。安装在您的64位机器上。 确保您所需的32位.exe/dll等放在该文件夹中。 如果你不能在那里找到它,你将不得不把32位版本的所需.exe/dll there.So这可以用于由yopur应用程序/进程。

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

希望能够解决您的兼容性问题。

4

具体哪些权限给了谁? 可能不是正确的用户..

运行这个PHP脚本:

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

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

+1

感谢您的回复。脚本由SYSTEM执行,ID为0,SYSTEM拥有完全控制权 –

+2

尝试给予Internet访客用户(IUSR)的权限 –

+1

我拥有IUSR,IIS_IUSRS,用户客户,并且我已授予完全控制权,我没有Internet来宾用户。我使用胜2008 –

2

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

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

这样做了以后,一切都开始工作了。