我之前使用mysqldump方法失败了。现在,我尝试只调用批处理文件,它将调用mysqldump。调用批处理文件的php文件如下所示:
<?php
shell_exec('c:\\abc.bat');
?>而批处理文件,当我直接执行它时,会产生我期望的7kb的sql文件:
mysqldump --opt -u root -ppassword onstor > c:\onstordb.sql但是当我使用php执行它时,我得到了一个0KB的文件,我想知道为什么。我同时尝试了shell_exec和exec。参数有问题吗?
发布于 2010-12-15 21:05:30
http://www.php.net/manual/en/function.exec.php#85930
它写道:
我在使用PHP
exec命令执行任何批处理文件时遇到了问题。执行其他命令(例如,"dir")工作良好)。但是如果我执行一个批处理文件,我没有收到来自exec命令的输出。
我的服务器设置由运行IIS6和PHP5.2.3的Windows Server2003服务器组成。在这台服务器上,我有:
在批处理文件所在的目录中,c:\windows\system32\cmd.exe.
%systemroot%\system32位于系统路径中时起作用。事实证明,即使在服务器上完成了上述所有操作,我仍然必须在exec调用中指定cmd.exe的完整路径。
当我使用调用时:
$output = exec("c:\windows\system32\cmd.exe /c $batchFileToRun");
然后一切都很好。在我的情况下,$batchFileToRun是批处理文件的实际系统路径(即调用realpath()的结果)。
https://stackoverflow.com/questions/4450116
复制相似问题