PHP脚本不能在Ubuntu服务器上作为cron作业运行

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

  • 该脚本称为backup.php。
  • 它会生成一个备份(gz归档中的sql)并将其存储在文件夹/备份中。
  • 它在/backup/log.txt中添加了几行文本。
  • 在crontab中为root用户调用脚本(sudo crontab -e):

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

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

    什么都没发生。 没有文件被创建,没有日志被修改。

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

  • 使用php backup.php直接在控制台中运行脚本
  • 运行cron作业: * * * * * php -v > /var/www/cmdb/backup/php-v.txt
  • 运行cron作业: * * * * * php -f /var/www/cmdb/test.php > /var/www/cmdb/backup/text.txt (将字符串写入文件)
  • 我认为这些测试表明:

  • backup.php脚本无误地工作
  • Cron正在运行
  • 备份文件夹是可写的
  • PHP命令可以从crontab访问
  • 那么,为什么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

    链接地址: http://www.djcxy.com/p/66347.html

    上一篇: PHP script does not run as cron job on Ubuntu Server

    下一篇: Timezones and cron