【发布时间】:2015-10-20 19:25:29
【问题描述】:
我正在尝试使用 exec() 从我的 php 文件中运行 mysqldump。文件位于我网站的 www 目录中,我正在从浏览器访问它。但是,无论我尝试什么,我都没有得到任何结果,也没有创建任何 sql 文件。
这是我的命令:
$export = exec("/usr/bin/mysqldump -u MY_USERNAME -pMY_PASS DATABASE_NAME products > /path/to/www/directory/sync/products.sql");
exec() 已启用。同步目录权限为 777。
如果我使用相同的命令,但像这样添加$output, $return_var:
$export = exec("/usr/bin/mysqldump -u MY_USERNAME -pMY_PASS DATABASE_NAME products > /path/to/www/directory/sync/products.sql", $output, $return_var);
$output 是一个空数组,$return_var 回显 127。
mysqldump 的路径正确:
root@server [~]# which mysqldump
/usr/bin/mysqldump
root@server [~]#
如果我从控制台运行命令,它会正常工作,并且新文件会在我的同步目录中创建。
有人可以告诉我我做错了什么以及我在这里缺少什么吗?在我们移到新服务器之前,该脚本一直运行良好...
【问题讨论】:
-
非零退出代码表示失败。您确定您的网络服务器用户有权在哪里写入文件?
-
@MarcB 我知道它表示失败......这就是它的美妙之处 - 如何调试它?至于写入文件的网络服务器用户权限 - 不应该在同步目录上使用 CHMOD 777 进行排序吗?如果没有,我该怎么办?