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

通过php调用批处理文件备份mysql数据库,php,mysql,Php,Mysql,我之前使用mysqldump方法失败。现在我尝试调用批处理文件,该批处理文件将调用mysqldump。 调用批处理文件的php文件如下所示: <?php shell_exec('c:\\abc.bat'); ?> 但是当我使用php执行它时,我得到一个0 Kb的文件,我想知道为什么。我试过shell_exec和exec。参数有问题吗? 内容如下: 我在使用PHP时遇到了问题 exec执行任何批处理的命令 文件执行其他命令 (即“dir”)工作正常)。但是如果我 执行了批处理文件,

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

<?php
shell_exec('c:\\abc.bat');

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

内容如下:

我在使用PHP时遇到了问题
exec
执行任何批处理的命令 文件执行其他命令 (即“dir”)工作正常)。但是如果我 执行了批处理文件,我没有收到
exec
命令的输出

我的服务器设置包括 Windows Server 2003服务器正在运行 IIS6和PHP 5.2.3。在这个服务器上,我 拥有:

  • 已在上向Internet用户授予执行权限
    c:\windows\system32\cmd.exe
  • 授予Everyone->对批处理文件所在目录的完全控制权 是写的
  • 授予所有人->对整个
    c:\cygwin\bin
    目录的完全控制权 以及它的内容
  • 已授予Internet用户“批量登录”权限
  • 指定要执行的每个文件的完整路径
  • 测试了从服务器上的命令行运行的这些脚本,并 它们很好用
  • 确保
    %systemroot%\system32
    位于 系统路径
  • 事实证明,即使所有的 上面在服务器上的适当位置,我必须 在中指定
    cmd.exe
    的完整路径
    exec
    调用

    当我打电话时:

    $output = exec("c:\\windows\\system32\\cmd.exe /c $batchFileToRun");
    
    然后一切顺利。在我的 在这种情况下,
    $batchFileToRun
    是 批处理文件的实际系统路径 (即,调用
    realpath()


    请不要只是粘贴答案的链接。如果你想这样做,考虑一下他们的意见。如果远程站点消失或暂时不可用,请在上面加上一些词,总结或引用所提供的链接,使答案更有价值。如果php.net消失,愿上帝怜悯我们的灵魂。@Dampe我至少有一次这样的情况发生过。net关闭,提供的链接有一段时间不起作用,这让OP感到疑惑。当然,提供到镜子的链接修复了这一问题,但无论如何,戈登引用有意义的部分(足够有意义)在大多数情况下是侵犯版权的。就PHP手册而言,它是在CC属性许可证下提供的,因此只有在属性许可的情况下才允许复制。从未发布许可证的网页复制是完全非法的。但在这种情况下并非如此,因为它来自于评论。有很多方法可以剥这只猫的皮。我花了2秒钟的时间在文档中的“bat”上查找,结果如何。叫我谷歌。
    $output = exec("c:\\windows\\system32\\cmd.exe /c $batchFileToRun");