我试图在php中使用exec()
,但看起来我所有的努力都是徒劳的!
请帮帮我:我的代码出了什么问题?
$cmd = "mysqldump -u root my_db table1 table2 > /home/aditi/Desktop/databasedump.sql";
$res = exec($cmd , $ot , $res);
但是我没有看到这个文件。但是当我在控制台上执行此操作时,没有问题。
任何帮助将不胜感激。
答案 0 :(得分:1)
代码是正确的。确保执行PHP文件的用户有权写入指定的文件夹。
答案 1 :(得分:1)
一些可能的原因:
缺少转储密码:$cmd = "mysqldump -u root -pPassword my_db table1 table2 > /home/aditi/Desktop/databasedump.sql";
mysqldump不在路径中:$cmd = "/usr/bin/mysqldump -u root -pPassword my_db table1 table2 > /home/aditi/Desktop/databasedump.sql";
不要忘记,Web服务器进程作为另一个用户运行,就像在shell中运行代码一样。确保webserver用户标识可以访问用于编写转储的文件夹。
答案 2 :(得分:1)
您是否使用过exec(“pwd”);等exec检查了其他简单命令。如果这不起作用,请检查您的域是否已启用安全模式。如果是,请关闭安全模式。如果该代码正在运行,请检查文件夹的路径和权限。
答案 3 :(得分:1)
正如@Kalai指出的那样,尝试其他简单的命令来查看exec
是否正常工作。
sudo
作为PHP用户并从shell执行相同的行以查看它是否在PHP脚本之外工作。相关:https://serverfault.com/questions/252552/sudoers-syntax-to-run-shell-script-as-php-user