ubuntu php 下的 cronjobs 不起作用

ubuntu php 下的 cronjobs 不起作用

我正在尝试设置 cronjobs 来定期向客户发送一些电子邮件,但我没有看到任何输出,我在这里编写的测试是 crontab 行

    * * * * * php /var/www/html/pms/notices/test.php

这是 test.php 代码

    <?php
     include(__DIR__ . "/config.php");
     $log_message = 'It works';
        error_log($log_message . "On:" . date("l jS \of F, Y, h:i:s A P") . "\n", 3, ROOT_PATH .'Logs/activity.log');      
    <?

我期望 activity.log 文件每分钟都会写入“它有效”,但什么都没有。我做错了什么吗?如果是,那是什么?或者我在哪里可以找到关于如何设置 cron 作业的良好教程我尝试将我的行更改为

   * * * * * /usr/bin/php -q /var/www/html/pms/notices/test.php

正如另一个问题所建议的那样,但这并没有帮助

答案1

cron 运行时环境与交互式环境不同,交互式环境也与 at/batch 环境不同。

在每个环境中运行此程序,然后比较文件:

(echo "=== set ===";set;echo "===env ==="; env | sort;echo "=== alias ===";alias) >a_different_log

我这样做了,并得到了:

walt@bat:~(0)$ ll *.environment
-rw-rw-r-- 1 walt walt  10672 Oct 22 13:59 at.environment
-rw-rw-r-- 1 walt walt  10672 Oct 22 13:57 batch.environment
-rw-rw-r-- 1 walt walt   1031 Oct 22 14:00 cron.environment
-rw-rw-r-- 1 walt walt 126378 Oct 22 13:55 interactive.environment
walt@bat:~(0)$ wc -l *.environment
   238 at.environment
   238 batch.environment
    48 cron.environment
  3642 interactive.environment

您的环境中某些 PHP 运行所需的设置未在 cron 环境中设置。您必须手动设置它,或将您的命令包装在设置环境的 bash 脚本中。

答案2

有可能/usr/bin/php不在 cron 中$PATH。尝试这样的 crontjob:

* * * * * /usr/bin/php /some/file.php

相关内容