Cron can';t执行shell功能的PHP

Cron can';t执行shell功能的PHP,php,cron,exec,Php,Cron,Exec,我每天晚上都用cron备份数据库 我运行的文件如下所示: #!/usr/bin/php <? mkdir($date('Y-m-d'), 0700); $user = 'root'; $pass = 'mypassword'; $host = 'localhost'; $dbh = new PDO("mysql:host=$host", $user, $pass); $dbs = $dbh->query(' SELECT `schema_name` FROM

我每天晚上都用cron备份数据库

我运行的文件如下所示:

#!/usr/bin/php
<?

mkdir($date('Y-m-d'), 0700);

$user = 'root';
$pass = 'mypassword';
$host = 'localhost';

$dbh = new PDO("mysql:host=$host", $user, $pass);

$dbs = $dbh->query('
    SELECT `schema_name` 
    FROM INFORMATION_SCHEMA.SCHEMATA  
');

while(($db = $dbs->fetchColumn(0)) !== false) {
    exec('mysqldump --user='.$user.' --password='.$pass.' --host='.$host.' '.$db.' > '.$db.'.sql');
}

?>
#/usr/bin/php
当我在浏览器中执行文件时,一切正常

当cron执行该文件时,它只创建目录,而不创建sql备份文件

你知道为什么吗


感谢您的帮助。

您的cli使用了不同的php.ini。确保它可以执行。@TimMorton,是的,它允许执行
exec
<代码>禁用功能实际上是空的。您确定要连接到数据库吗?当运行时,它可能会悄悄地使
失败。或者默默地出错,为了这个matter@TimMorton是的,正如我所解释的,它在浏览器中运行良好。仅仅因为它在一个平台上工作并不意味着它在另一个平台上工作完美。我并不是说你的代码不好,但在配置或与数据库的连接中显然有些不同。在您假设您正在从数据库中获取数据之前,请花点时间向自己证明您的cli使用了不同的php.ini。确保它可以执行。@TimMorton,是的,它允许执行
exec
<代码>禁用功能实际上是空的。您确定要连接到数据库吗?当
运行时,它可能会悄悄地使
失败。或者默默地出错,为了这个matter@TimMorton是的,正如我所解释的,它在浏览器中运行良好。仅仅因为它在一个平台上工作并不意味着它在另一个平台上工作完美。我并不是说你的代码不好,但在配置或与数据库的连接中显然有些不同。在您假设您正在从数据库中获取数据之前,请花时间向自己证明这一点