2013-10-20 49 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方法名