crontab没有使用codeigniter运行

时间:2013-10-20 19:17:52

标签: php linux 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正在运行,我已经检查过了。

这里有什么想法吗?

4 个答案:

答案 0 :(得分:3)

下午3:18是15:18另外,不要忘记设置php解释器的完整路径:

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

答案 1 :(得分:1)

您应该使用二进制文件的完整路径,可能是/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

答案 2 :(得分:1)

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

使用:

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

答案 3 :(得分:0)

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

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