php - 使用 PHP 但不是命令行的 MySQLdump 空文件?

标签 php mysql mysqldump

我正在研究 mysql 的备份脚本。这个的一个变体曾经工作过,但自 php4 以来我没有看过它。它返回一个空文件。奇怪的是,如果我转到命令行并使用完全相同的命令,我会得到我期望的文件。

我在互联网上四处搜寻,找不到任何……想法?

错误的代码?

$db_host='localhost';
$db_user='root';
$db_pass='root';
$db_name='gakkou';
$dir='backups';
$file_list=scandir($dir);
if(count($file_list)>10) unlink($dir.'/'.$file_list[2]); //delete old file
$prefix=date("YmdHi").'_';
$command='mysqldump -u'.$db_user.' --password="'.$db_pass.'" --databases '.$db_name.' | gzip > '.$dir.'/'.$prefix.'_backup.sql.gzip';
exec($command,$output,$return_val);

这非常有效:mysqldump -uroot -proot -hlocalhost gakkou >/webdocs/gakkou/backups/mysql_backup.sql 它与 php 文件执行的命令完全相同(除了文件名)。

编辑:为任何感兴趣的人更新工作代码。事实证明这是两个不同的问题。使用 MAMP,我需要指定路径 /Applications/MAMP/Library/bin/mysqldump。然后在生产服务器上,疯狂的密码破坏了工作。

最佳答案

好的。终于弄明白了。我 super 愚蠢的密码与 mysqldump 混淆,因为它有一个“&”。不必更改密码。我只是将密码括在括号中:--password="'.$db_pass.'" 现在它按预期工作了。浪费了很多时间... @MarcB,非常感谢您的帮助。不知道如何返回错误,这绝对是最大的障碍。

关于php - 使用 PHP 但不是命令行的 MySQLdump 空文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22123576/

相关文章:

mysql - 如何使用 XAMPP for Windows 访问 MySQL 命令行?

php - 检查用户存在语句是否有效,而电子邮件语句在 PDO 中无效

php - 在 apache 下不显示外部图像

mysql - MySQL 中有两个 ENUM 字段的表,奇怪的行为。这是一个错误吗?

php - 使用 php 在 PDF 中嵌入视频/flash

MySql如何在找不到值时显示零

cross-platform - 如何让 mysqldump 保留表名的大小写?

php - 通过 PHP 使用 Exchange 管理单元执行 powershell 脚本

php - imagecreatefrompng() png透明部分为黑色

php - 如何访问 Blade View laravel 5.6 中定义的关系