Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP exec()函数_Php_Batch File - Fatal编程技术网

PHP 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

我在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.ini中的

从手册

注意:启用安全模式时,只能执行安全模式\u exec\u dir中的文件。出于实际原因,目前不允许有。。可执行文件路径中的组件


如果您正在使用IIS,为了执行应用程序,Internet来宾帐户需要对
CMD.exe
具有执行权限。因为每个shell执行都以
CMD.exe-c
的形式运行

然后验证一个简单的
回波系统(“dir”)工作。这将返回当前文件夹的目录列表


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

Thanx对于您的答复,我无法访问该电脑,但我会尽快检查安全模式。如果安全模式是开启的,我是否应该为调用exec发出警告或其他信息?我检查了php.ini文件,安全模式是关闭的。禁用功能为空。是否可以从另一台计算机远程测试此功能?我现在没有访问电脑的权限。是以验证您对
cmd.exe
check
echo系统(“dir”)是否具有执行权限。如果可行,请验证执行仅包含
dir
的批处理文件是否可行。从这里,您可以断言问题出在
rundll32.exe
上。我对php exec函数有问题。您确定这与exec有关吗?
exec
passthru
system
的工作方式大致相同
exec
返回字符串数组中的stdout,
system
将stdout作为字符串返回,
passthru
在执行程序返回需要以原始形式捕获的二进制数据时使用。所以,是的,如果其中任何一个工作,所有的都应该工作;它呼应着“系统(“目录”)!不是当前文件夹的目录列表。