2012-12-11 320 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了。如果你唯一需要的是,恕我直言,你可以避免,