2013-10-20 52 views
2

我相信答案是正确的在我面前,但这让我疯狂。我搜索了高和低的答案,找不到它。基本上我试图通过我的服务器上的cronjob运行一个脚本,没有任何工作。但是,当我用PHP命令行运行它时,它工作正常。cronjob没有与codeigniter运行

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

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正在运行,我检查过了。

这里的任何想法?

+0

我从来没有用过分钟,以0开头,仅仅是一个想法 – 2013-10-20 19:20:47

+0

@Dagon,实际上,这是错误的路线。我编辑了我的问题并发布了正确的问题。 – Sethen

+0

所以它从命令行运行,但不是作为cronjob?如果托管,请询问主机,尝试完整路径到php,在crontab文件中设置一个电子邮件地址 - 它会向您发送错误。我的'猜测' – 2013-10-20 19:25:22

回答

3

下午3时18分是15:18另外,不要忘记设置完整路径PHP解释:

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

改变它在330发送时没有工作。 – Sethen

+0

'-f'是什么? – Sethen

+0

-f选项告诉php,下一个令牌是脚本文件 – romik

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 
+0

工作,问题没有完全指定PHP路径。谢谢! – Sethen

1

我有同样的问题,并使用正确的PHP路径后,它为我工作。

用途:

在/ usr/local/bin目录/ PHP /home/username/public_html/index.php controllername方法名