2012-12-11 318 views
0

好的,所以我做了一個cronjob,每兩分鐘運行一次,並設置它給我發電子郵件。那麼,這是cronjob。 /home/sites/psychowars.com/public_html/cronjobs/energy_minute.php 這是我收到的電子郵件..不錯:CronJobs權限被拒絕

/home/sites/psychowars.com/public_html/cronjobs/energy_minute.php: Permission denied

嗯,這是假設運行的PHP文件。

<?php 
require '../stats/users_stats.php'; 
    { 
    if ($energy < $max_energy) { 
    $sql = "UPDATE users SET energy=(energy + 1) WHERE id='".$id."'"; 
    $res = mysql_query($sql); 
    } 
    } 
?> 

每2分鐘用戶應該收到1能量,如果它低於其最大能量。 有什麼問題的解決方案?

+1

歡迎來到堆棧溢出!發佈你的cron行作爲你的文章的一部分 - 這樣我們就可以看到你正在執行什麼。聽起來像一個用戶/組/世界的權限問題和相對路徑。 – nickhar

回答

0

嘗試在腳本的開始[「DOCUMENT_ROOT」]手動設置$ _ SERVER,不要使用相對路徑爲腳本的cronjob:

$_SERVER["DOCUMENT_ROOT"] = "/home/sites/psychowars.com/public_html"; 
require $_SERVER["DOCUMENT_ROOT"].'/stats/users_stats.php'; 
if ($energy < $max_energy) { 
    $sql = "UPDATE users SET energy=(energy + 1) WHERE id='".$id."'"; 
    $res = mysql_query($sql); 
} 
+0

我會將document_root替換爲什麼?或者我會保留在那裏? – user1893203

+0

如果我真的加載頁面本身。與PHP的實際頁面,它會給用戶的能量,但它似乎像cronjob沒有運行它我每2分鐘我猜。 – user1893203

+0

保留它,它是一個預定義的變量(但是當腳本由cron運行時它是空的) – dimaninc

0

你有答案here

$ _ SERVER變量沒有從cron作業設置。

0

如果仍然不能工作,你可以將你的cronjob外包給www.guardiano.pm,並打電話給http post或者向yoursite.com/users_stats.php索取請求,這樣你就不需要關心cronjob了。如果你唯一需要的是,恕我直言,你可以避免,