“出于安全原因,exec()已被禁用”& “未定义的变量”

时间:2009-12-03 03:30:11

标签: php exec

我发现了一个很酷的MySQL备份脚本。它在一些托管公司工作正常。 现在我在运行PHP 5.2.8版的不同主机上尝试它。

我有一个包含它的php.ini文件(在根目录和当前目录中):

disable_functions =. 

我收到了这些警告,似乎不仅仅是警告。 如果exec()未运行,则不备份数据库。

  

未定义的变量: /home/nealsent/public_html/backups/backup_dbs.php 中的输出 21
  未定义的变量:res /home/nealsent/public_html/backups/backup_dbs.php 在线 210 上   出于安全原因,在 210 /home/nealsent/public_html/backups/backup_dbs.php 中已禁用exec()

代码如下。

// dump db
unset($output);

    // Line 210:
exec("$MYSQL_PATH/mysqldump $db_auth --opt $db 2>&1 >$BACKUP_TEMP/$db.sql", $output, $res);

2 个答案:

答案 0 :(得分:4)

许多主机禁用某些功能,并且不允许在自定义php.ini中覆盖它们(因为PHP提供了自定义php.ini的能力,并不意味着所有PHP设置都必须配置为允许您更改通过这样的选项)。

主机可能根本不允许exec()时段。你真的无法做到这一点。

答案 1 :(得分:2)

另一种可能性是exec已被PHP safe mode禁用。从引用的页面看,您可以通过将正在执行的脚本放入PHP“安全模式exec目录”来避免这种情况。