【问题标题】:exec("mysqldump") returning 2 but the command works in command-lineexec("mysqldump") 返回 2 但该命令在命令行中工作
【发布时间】:2019-10-25 15:54:39
【问题描述】:

我正在尝试通过 mysqldump 备份 MySQL,该命令在命令行中运行,但它从 exec() 返回 2。

这是我正在使用的代码:

$filename = "/path/to/backup/dbBackUp".date("Y-m-d").".sql";
$backupcmd = "/usr/bin/mysqldump -u USERNAME -pPASSWORD -A --single-transaction >".$filename;
exec($backupcmd, $output, $return);

$output 的 Vardump 是 array(0) { } 和 $return = 2。

【问题讨论】:

  • 网络服务器在运行吗?网络服务器用户是否有/path/to/backup/ 的权限?
  • 这不会修复您的错误,但可能会帮助您找出问题所在。 stackoverflow.com/a/16665146/1007220
  • 正如@AbraCadaver 所说,apache 正在运行您的代码(除非您正在执行 php /path/to/your/script.php 而不是加载网页)并且它可能没有读取/写入该文件夹甚至执行 mysqldump 的权限
  • 所以寻找一种方法,让您的进程为 php 提供写入该文件夹的权限。这取决于您使用的系统(CentOS、Ubuntu、Windows 等)

标签: php mysql command-line mariadb


【解决方案1】:

事实证明,www-data 对我存储备份的文件夹没有写入权限。谢谢你的帮助。

【讨论】:

    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多