2009-08-04 104 views
1

我有一個cron工作,理想情況下我希望每小時運行一次(它是FB加速器和實時社交工具,所以一小時不會削減它)Cron錯誤消息;是我的腳本導致錯誤?

1)我可以有一個cron工作包含「run(),sleep(60),run()...」,持續60分鐘?

2)運行一邊的頻率,它目前輸出:

...web/public/mysqltest.php: ?php: cannot open 
...web/public/mysqltest.php: require_once: not found 
...web/public/mysqltest.php: include_once: not found 
...web/public/mysqltest.php: include_once: not found 
...web/public/mysqltest.php: syntax error at line 5: `(' unexpected 

(該路徑的其餘部分是存在的)。

如何開始調試該消息?我的服務器無法打開PHP文件,這很奇怪。當在瀏覽器中運行時,它的工作非常出色。腳本的前6行是:

<?php 
require_once 'facebook.php'; 
include_once 'lib.php'; 
include_once 'config.php'; 
$facebook = new Facebook($api_key, $secret); 
get_db_conn(); 

據我所知,沒什麼超級花式。

我可以確認include/required文件確實在同一個目錄下。他們是否需要一定的訪問權限?任何和所有的幫助,將不勝感激。

回答

2

cron腳本執行時間沒有限制。就我個人而言,我有一個cron php腳本,它在執行後會持續超過45分鐘。請注意,在這種情況下,您可能需要更改php.ini,因爲它包含php腳本執行時間限制。

你應該把以下

#!/usr/bin/php 

在你的PHP腳本的開始。這樣你就可以像普通腳本一樣從bash執行它。
完成並測試後,放入cron。

2
  1. 我對此並不熟悉。

  2. 您應該在您的cron腳本中調用/ path/to/php file.php。看起來它目前正在嘗試使用bash來代替。
+0

或者通過把#!的/ usr/bin中/ PHP在PHP的第一線,直接執行它像這樣./script.php – 2009-08-04 16:22:37

0

如果指定了絕對路徑,而不是相對路徑在你的腳本,cron將會能夠找到他們。從cron運行時,腳本不會運行在它的目錄中。

2

它看起來像PHP源代碼正在執行的shell命令列表 - 確保您通過PHP解釋器運行它。

+0

沒錯!明確的答案。 – 2009-08-04 16:26:33

3

由於它被內部調用,它不被服務器解析。 您的cron作業的開始應該包括你的PHP解析器的路徑

如:

/usr/bin/php /home/path_to/php_file/yourfile.php 

你會需要找到當然PHP你自己的服務器的路徑

+1

或者通過把#!在PHP的第一行的/ usr/bin中/ PHP和直接執行它像這樣./script.php – 2009-08-04 16:23:08

0

你必須意識到你的環境變量沒有用cron定義。

在你的會話,你可以撥打

php my_php_file.php 

和它的作品,因爲PHP是到PATH變量的目錄。

它總是建議在cron作業時使用全路徑名。

您可以執行定義你需要太多的所有變量的腳本。

+0

或者通過把#!的/ usr/bin中/在PHP中的第一行PHP和直接像這樣執行它./script.php – 2009-08-04 16:25:48