【问题标题】:PHP MySQL Backup script on IIS ServerIIS 服务器上的 PHP MySQL 备份脚本
【发布时间】:2009-09-29 22:16:57
【问题描述】:

有点新手,所以请原谅缺乏术语。 . . . 我有一个 PHP 脚本来备份 MySQL 数据库“dbjobs”。 我已经尝试了几乎所有我能做到的,但无法让它发挥作用。 如果我直接从服务器上的命令提示符运行 $command,它会起作用,但是每次我尝试运行 PHP 版本时,都会收到 HTTP 500 错误。

<?php
$backupFile = "DBJobs_" . date("Y-m-d");
$command = "\"mysqldump.exe\" --opt -hlocalhost -uUser -pPasswword dbjobs > c:/backup.sql";
$result = system($command);

if ($command !== false) {
echo "<p>Backup file created!</p>";
}
else {
  echo "<p>There was a problem!</p>";
}
?>

我尝试了 exec() 函数而不是 system(),但还是一样。 有谁知道我哪里出错了?

谢谢

【问题讨论】:

    标签: php mysql iis backup


    【解决方案1】:

    这很可能是路径问题(网络服务器不知道可执行文件在哪里)和权限问题。通常,IIS 无法执行 shell (cmd.exe),因此无法运行可执行文件,因此它必须具有获取 shell 和运行 MySQL 实用程序的权限。

    您的另一种选择是让数据库使用写入输出文件的 select 语句为您执行此操作。

    【讨论】:

    • 请记住第一个选项,Web 服务器必须具有写入目录的权限,而第二个选项,数据库服务器必须具有写入权限。
    • 做替代方案,exec 和 system 通常都被禁用,无论如何都不应该被允许。
    【解决方案2】:

    可以尝试以下几个选项:

    • $命令行代码中mysqldump.exe的完整路径
    • 您可以尝试使用反引号 $command 而不是 system(反引号键在您切换时也有 tilda 符号)
    • 可能是权限问题???

    【讨论】:

      【解决方案3】:

      您必须授予在 C:\WINDOWS\System32\cmd.exe 上运行 IIS 的帐户的读取/执行权限。 Check this out.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-21
        • 2017-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-08
        • 1970-01-01
        相关资源
        最近更新 更多