PHP脚本不能在Ubuntu服务器上作为cron作业运行
我写了一个php脚本,创建一个mysql数据库的备份,并将其设置为每天在Ubuntu服务器上使用crontab运行,但脚本从不执行(至少看起来如此)。
在crontab中为root用户调用脚本(sudo crontab -e):
* * * * * php -f /var/www/cmdb/backup.php
(时间需要调整,但这是出于测试目的。)
什么都没发生。 没有文件被创建,没有日志被修改。
但是,以下所有测试都会成功:
php backup.php
直接在控制台中运行脚本 * * * * * php -v > /var/www/cmdb/backup/php-v.txt
* * * * * php -f /var/www/cmdb/test.php > /var/www/cmdb/backup/text.txt
(将字符串写入文件) 我认为这些测试表明:
那么,为什么backup.php在从crontab运行时做任何事情?
正如在注释中看到的那样,问题/var/www/cmdb/backup
在脚本中的路径中:您想使用/var/www/cmdb/backup
并只写了backup
因为您认为脚本运行在同一目录中没有问题。
因此,一般情况下,不要从crontab中假设脚本中的路径:cron在非常有限的环境下运行,其运行路径通常为/root
或/
。 因此,无论您在脚本中拥有什么,都可以使用完整路径。
否则,请移至路径,然后运行脚本:
* * * * * cd /var/www/cmdb/ && php -f backup.php
你可以尝试直接从命令行运行命令来检查输出吗?
php -f /var/www/cmdb/backup.php
你可以尝试明确的位置的PHP?
* * * * * /usr/bin/php -f /var/www/cmdb/backup.php
上一篇: PHP script does not run as cron job on Ubuntu Server
下一篇: Timezones and cron