PHP exec()函数

时间:2009-10-31 10:00:07

标签: php batch-file

我在windows xp上开发了一个程序,我使用exec来运行“.bat”文件,它工作正常。我在Windows 2003上复制了确切的程序,并且bat文件没有运行。 我在exec函数之前使用了echo,它似乎运行正常,我的意思是它回应:

D:\ xampp \ htdocs \ x> RunDLL32.EXE printui.dll,PrintUIEntry / y / n“HP LaserJet P2015 Series PS”

但它没有做任何事情。我单独运行bat文件,它工作正常。只是不适用于Windows 2003中的exec。 任何想法?

2 个答案:

答案 0 :(得分:1)

是否在该服务器上启用了安全模式?如果是这样,那么你将无法执行这样的程序。您需要关闭安全模式或将该目录添加到PHP.ini中的safe_mode_exec_dir

来自手册

  

注意:启用安全模式后,您只能执行safe_mode_exec_dir中的文件。出于实际原因,目前不允许在可执行文件的路径中包含..组件。

答案 1 :(得分:1)

如果您使用的是IIS,则为了执行应用程序,Internet Guest帐户需要CMD.exe的执行权限。每个shell执行都以CMD.exe -c <your command>运行。

然后验证简单的echo system("dir");是否有效。这应该返回当前文件夹的目录列表。

您可能还必须为Internet Guest帐户授予批处理文件及其执行的任何可执行文件的执行权限(在本例中为rundll32.exe)。