PHP文件手动运行但在Cron Job上表现出意外

时间:2012-05-09 08:40:17

标签: php cron

我有一个dreamhost网络面板,我正在设置一个cronjob来运行我的php脚本,但它显示了奇怪的错误,看起来它没有执行文件,但它正在读取文件。错误如下所示,它以电子邮件形式发送给我

  

?php:没有这样的文件或目录[somesessionvariable] = 1573:command   找不到第3行:意外令牌附近的语法错误   "include/mydb.php"' line 3: require_once( “包括/ mydb.php”);

这是邮件的主题:

  

Cron / usr / local / bin / setlock -n   /tmp/cronlock.3782446772.128284 sh -c $'/ path /to/file/cases_cron.php'

该文件的权限是755,我已经从其他完美运行的cronjobs复制了路径,所以文件路径没有问题,因为它获取文件内容。我没有得到问题所在

4 个答案:

答案 0 :(得分:1)

我应该尝试使用包含文件的绝对路径。

我确定问题是文件调用和cron调用中的包含路径没有设置相同。

您可以这样做:

require_once dirname(__FILE__)."/include/mydb.php";

__FILE__是执行此行的文件的路径,dirname()返回文件所在的绝对路径。

当然,您可以根据需要使用requirerequire_onceincludeinclude_one

答案 1 :(得分:0)

您的路径可能已关闭。尝试避免相对路径(include / file.php而不是/var/www/project/include/file.php)或使用chdir()更改工作目录。

答案 2 :(得分:0)

你也可以在你的cronjob中输入'cd'命令,即:

cd /path/to/phpfile && php -f file.php

答案 3 :(得分:0)

好的,伙计们,感谢您的支持,我终于能够解决这个问题。

我错过了文件顶部的以下行

#!/usr/local/bin/php

在php文件的顶部添加此行,对我的问题进行了排序。但我不知道这条线对脚本意味着什么。但我从其他工作的crons复制了它。