cronjob 未与 codeigniter 一起运行


cronjob not running with codeigniter

我相信答案就在我面前,但这让我发疯了。 我上下搜索了答案,但找不到它。 本质上,我正在尝试通过服务器上的cronjob运行脚本,但没有任何效果。 但是,当我使用 PHP 命令行运行它时,它工作正常。

所需的效果是定期发送电子邮件。 所以,当我运行这个时:

php /var/www/html/index.php email_controller index

电子邮件发送,一切正常。 我调用email_controller控制器和index方法。 index方法不是必需的,如果我将其关闭,也可以工作。

我的crontab如下所示:

18 15 * * * php /var/www/html/index.php email_controller index

在下午 3:18 运行脚本。 这行不通。 cron正在运行,我已经检查过了。

这里有什么想法吗?

3:18PM 是 15:18 另外,不要忘记将完整路径设置为 php 解释器:

18 15 * * * /usr/bin/php -f /var/www/html/index.php email_controller index

您应该使用二进制文件的完整路径,它可能/usr/bin/php但使用 whereis php 来获取正确的路径。

除此之外,我不明白为什么这不应该起作用。如果手动运行它有效吗?

您是否使用crontab -e添加任务?使用调试脚本进行一些测试,使其每分钟使用 * * * * * 运行一次,以便您可以调试它:

// debugcrontab.php
<?php
    file_put_contents('Ran at ' . date('Y-m-d H:i:s') . "'n", '/tmp/debug.txt', FILE_APPEND);
?>

如果仍然失败,请尝试/bin/sh /usr/bin/php ...

我在我的服务器中使用这个,它工作得很好:

0 3 * * * /usr/bin/php /var/www/update_reports.php > /dev/null 2>&1

我遇到了同样的问题,在使用正确的 PHP 路径后,它对我有用。

用:

/

usr/local/bin/php/home/username/public_html/index.php controllername methodname

验证 PHP 可执行文件的路径是否正确;对我来说,这是/usr/local/bin/php

尝试which php以获取默认 php 的路径 - 或尝试/usr/bin/env php