EXEC功能无法以所需方式工作

时间:2012-09-13 10:40:14

标签: php mysql console

我试图在php中使用exec(),但看起来我所有的努力都是徒劳的!

请帮帮我:我的代码出了什么问题?

$cmd = "mysqldump -u root my_db table1 table2 > /home/aditi/Desktop/databasedump.sql";              
$res = exec($cmd , $ot , $res);

但是我没有看到这个文件。但是当我在控制台上执行此操作时,没有问题。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

代码是正确的。确保执行PHP文件的用户有权写入指定的文件夹。

答案 1 :(得分:1)

一些可能的原因:

  • 缺少转储密码:$cmd = "mysqldump -u root -pPassword my_db table1 table2 > /home/aditi/Desktop/databasedump.sql";

  • 运行shell时,
  • 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)

  1. 正如@Kalai指出的那样,尝试其他简单的命令来查看exec是否正常工作。

  2. sudo作为PHP用户并从shell执行相同的行以查看它是否在PHP脚本之外工作。相关:https://serverfault.com/questions/252552/sudoers-syntax-to-run-shell-script-as-php-user