我有一个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复制了路径,所以文件路径没有问题,因为它获取文件内容。我没有得到问题所在
答案 0 :(得分:1)
我应该尝试使用包含文件的绝对路径。
我确定问题是文件调用和cron调用中的包含路径没有设置相同。
您可以这样做:
require_once dirname(__FILE__)."/include/mydb.php";
__FILE__
是执行此行的文件的路径,dirname()
返回文件所在的绝对路径。
当然,您可以根据需要使用require
,require_once
,include
,include_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复制了它。