我在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。 任何想法?
答案 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
)。