PHP 脚本没有 运行 作为 Ubuntu 服务器上的 cron 作业

PHP script does not run as cron job on Ubuntu Server

我写了一个 php 脚本来创建 mysql 数据库的备份,并在 Ubuntu 服务器上使用 crontab 每天将其设置为 运行,但是脚本永远不会执行(至少看起来如此)。

脚本在 crontab 中为 root 用户调用,如下所示 (sudo crontab -e):

* * * * * php -f /var/www/cmdb/backup.php

(时间需要调整,但这是为了测试目的。)

没有任何反应。没有创建文件,没有修改日志。

但是,以下所有测试均成功:

我认为这些测试表明:

那么,当 运行 从 crontab 执行时,为什么 backup.php 什么都不做?

您可以直接从命令行尝试 运行 命令来检查输出吗?

php -f /var/www/cmdb/backup.php

你能试着明确指出 php 的位置吗?

* * * * * /usr/bin/php -f /var/www/cmdb/backup.php

如评论中所示,问题出在脚本中的路径中:您想使用 /var/www/cmdb/backup 并只写了 backup 因为您认为自脚本 运行在同一目录中。

因此,一般来说,在非常有限的环境下,永远不要从 crontab:cron 运行s 中假定脚本中的路径,并且其 运行ning 路径通常是 /root 或只是 /。因此,无论您在脚本中有什么,都要使用完整路径。

或者,否则,移至路径,然后 运行 脚本:

* * * * * cd /var/www/cmdb/ && php -f backup.php