1

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

?php: 没有这样的文件或目录 [somesessionvariable]=1573: command not found line 3: 意外标记附近的语法错误 "include/mydb.php"' line 3:require_once("include/mydb.php");

这是邮件的主题:

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

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

4

4 回答 4

1

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

我确定问题在于文件调用和 cron 调用中的包含路径未设置相同。

你可以这样做:

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

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

当然,你可以随心所欲地使用require, require_once, include,include_one

于 2012-05-09T08:44:39.570 回答
0

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

于 2012-05-09T08:44:51.560 回答
0

您还可以将“cd”命令放入您的 cronjob 中,即:

cd /path/to/phpfile && php -f file.php
于 2012-05-09T08:52:13.347 回答
0

好的,伙计们,谢谢大家的支持,我终于可以解决问题了。

我在文件顶部缺少以下行

#!/usr/local/bin/php

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

于 2012-05-10T04:37:12.443 回答