首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过php调用批处理文件备份mysql数据库

通过php调用批处理文件备份mysql数据库
EN

Stack Overflow用户
提问于 2010-12-15 20:59:43
回答 1查看 693关注 0票数 0

我之前使用mysqldump方法失败了。现在,我尝试只调用批处理文件,它将调用mysqldump。调用批处理文件的php文件如下所示:

代码语言:javascript
运行
复制
<?php
shell_exec('c:\\abc.bat');

?>

而批处理文件,当我直接执行它时,会产生我期望的7kb的sql文件:

代码语言:javascript
运行
复制
mysqldump --opt -u root -ppassword onstor > c:\onstordb.sql

但是当我使用php执行它时,我得到了一个0KB的文件,我想知道为什么。我同时尝试了shell_exec和exec。参数有问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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.

  • Granted Everyone被授予执行权限->对批处理文件所在目录的完全控制->对整个批处理目录及其contents.

  • Granted的完全控制互联网用户“以批处理身份登录”executed.

  • Tested每个文件的完整路径executed.

  • Tested这些脚本从服务器上的命令行运行,它们只在%systemroot%\system32位于系统路径中时起作用。

事实证明,即使在服务器上完成了上述所有操作,我仍然必须在exec调用中指定cmd.exe的完整路径。

当我使用调用时:

$output = exec("c:\windows\system32\cmd.exe /c $batchFileToRun");

然后一切都很好。在我的情况下,$batchFileToRun是批处理文件的实际系统路径(即调用realpath()的结果)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4450116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档