PHP exec()函数
我在WindowsXP上开发了一个程序,我用exec运行了一个“.bat”文件,它运行得很好。我在windows 2003上复制了完全相同的程序,但bat文件没有运行。 我在exec函数之前使用了echo,它似乎工作得很好,我的意思是它进行了回显: D:\xampp\htdocs\x>运行dll32.EXE printui.dll,printui条目/y/n“HP LaserJet P2015系列PS” 但它什么也没做。我单独运行了bat文件,它运行良好。只是在windows 2003中不能与exec一起使用。PHP exec()函数,php,batch-file,Php,Batch File,我在WindowsXP上开发了一个程序,我用exec运行了一个“.bat”文件,它运行得很好。我在windows 2003上复制了完全相同的程序,但bat文件没有运行。 我在exec函数之前使用了echo,它似乎工作得很好,我的意思是它进行了回显: D:\xampp\htdocs\x>运行dll32.EXE printui.dll,printui条目/y/n“HP LaserJet P2015系列PS” 但它什么也没做。我单独运行了bat文件,它运行良好。只是在windows 2003中不能与e
有什么想法吗?该服务器是否启用了安全模式?如果是这样,那么您将无法执行类似的程序。您需要关闭安全模式,或者将该目录添加到PHP.ini中的 从手册 注意:启用安全模式时,只能执行安全模式\u exec\u dir中的文件。出于实际原因,目前不允许有。。可执行文件路径中的组件
如果您正在使用IIS,为了执行应用程序,Internet来宾帐户需要对
CMD.exe
具有执行权限。因为每个shell执行都以CMD.exe-c
的形式运行
然后验证一个简单的回波系统(“dir”)代码>工作。这将返回当前文件夹的目录列表
您可能还必须授予Internet来宾帐户对批处理文件及其执行的任何可执行文件的执行权限(在本例中为rundll32.exe
)。Thanx对于您的答复,我无法访问该电脑,但我会尽快检查安全模式。如果安全模式是开启的,我是否应该为调用exec发出警告或其他信息?我检查了php.ini文件,安全模式是关闭的。禁用功能为空。是否可以从另一台计算机远程测试此功能?我现在没有访问电脑的权限。是以验证您对cmd.exe
checkecho系统(“dir”)是否具有执行权限代码>。如果可行,请验证执行仅包含dir
的批处理文件是否可行。从这里,您可以断言问题出在rundll32.exe
上。我对php exec函数有问题。您确定这与exec有关吗?exec
、passthru
和system
的工作方式大致相同exec
返回字符串数组中的stdout,system
将stdout作为字符串返回,passthru
在执行程序返回需要以原始形式捕获的二进制数据时使用。所以,是的,如果其中任何一个工作,所有的都应该工作;它呼应着“系统(“目录”)!不是当前文件夹的目录列表。