2014-10-10 132 views
0

我試圖在UTC時間01:00每天運行一個php腳本。我有我的crontab中的
00 01 * * * /usr/bin/php -f /var/www/html/test.php
,但由於某些原因,它沒有運行我的腳本。我知道腳本本身是有效的,因爲我測試了它。它只是不會在crontab中運行。我也試過使用在crontab中運行php腳本

00 01 * * * php /var/www/html/test.php 

但這也沒有工作。我已將#!/usr/bin/php添加到我嘗試運行的php腳本的開頭。我也嘗試了-q而不是-f。沒有任何工作,我不知道我能做些什麼來解決這個問題。如果這仍然不起作用,還有其他方法可以嘗試嗎?

+1

其中所有者和組不屬於test.php的調用

http://localhost/test.php 

?你有沒有試過從命令行運行它? – 2014-10-10 20:35:21

+0

另外,你是否指定了正確的PHP路徑? – Venice 2014-10-10 20:36:23

+0

這是一個由root用戶創建的文件。我也嘗試使用chmod + x test.php 更改權限在命令行上,我運行命令「php /var/www/html/test.php」,腳本完成了我想要的操作。 – fcr91 2014-10-10 20:38:37

回答

0

我最終做的是寫一個ksh腳本,導出更多路徑,然後運行php腳本。這工作。

export ORACLE_HOME=/opt/oracle/product/11.2.0/client export LD_LIBRARY_PATH=/opt/oracle/product/11.2.0/client/lib/ export PATH=$PATH:/opt/oracle/product/11.2.0/client/bin php /var/www/html/test.php

0

確保您的路徑正確。嘗試這種語法:

cd /var/www/html; php -q -c ./ test.php 

-q標誌禁止任何標題()被寫入到標準輸出。這會強制您的腳本使用php-cgi二進制文件而不是命令行版本來執行。

-c標誌可防止操作系統改變目錄,因爲您使用cd來做到這一點。

+0

你/不應該/需要指定PHP的路徑.. – 2014-10-10 20:41:11

+0

是這對於crontab? – fcr91 2014-10-10 20:59:30

+0

yessir。 @ fcr91您可以使用分號一次執行兩個命令。 – 2014-10-10 22:17:37

-1

爲什麼不直接讓文件成爲可執行文件(chmod 750 /var/www/html/test.php),然後用shebang啓動它?

#!/usr/bin/php 
<?php 
.... 
?> 

然後你的cron作業只需要引用腳本。

00 01 * * * /var/www/html/test.php 

注意我對該文件使用了750個權限以使其可執行用戶和組。如果它是由別人運行它將需要755.

+0

-1對shebang沒有給出任何解釋。我的答案中的-q標誌具有完全相同的效果,無需修改任何代碼。 – 2014-10-10 22:19:04

+0

也是,theres沒有理由755 cron工作。 750綽綽有餘。 – 2014-10-10 22:20:15

+0

權限全部取決於誰在運行腳本。但這是一個好點,我會記下它。 – miken32 2014-10-10 22:58:09

0

具有本地 Web服務器正在運行,你可以從你的crontab