gpt4 book ai didi

php exec mysqldump 不工作

转载 作者:行者123 更新时间:2023-11-29 02:21:06 28 4
gpt4 key购买 nike

我正在尝试使用 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 [~]#

如果我从控制台运行该命令,它会正常工作,并且会在我的同步目录中创建新文件。

有人可以告诉我我做错了什么以及我在这里缺少什么吗?在我们移动到新服务器之前,该脚本曾经工作得很好......

最佳答案

我到处搜索,偶然发现了解决我问题的方法。

而不是使用

$export = exec("/usr/bin/mysqldump -u MY_USERNAME -pMY_PASS DATABASE_NAME products > /path/to/www/directory/sync/products.sql");

我现在正在使用这个和这个可行:

$export = exec('mysqldump -u MY_USERNAME -pMY_PASS DATABASE_NAME products -r "/path/to/www/directory/sync/products.sql"');

使用 mysqldump 的路径没有区别。使用 options (在本例中为 -r )为我解决了这个问题,尽管我不太明白为什么原来的解决方案不起作用。

也许值得一提 - 我注意到我无法使用标准 mysql -u -p db < table.sql 导入数据库- 运行该命令只会向我显示帮助说明,就好像我运行了 mysql -? .我不确定这是否特定于我和我的服务器,但也许上述解决方案可以帮助处于类似情况的人。

关于php exec mysqldump 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31706808/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com