PHP包含在cron作业中

时间:2011-02-19 22:51:55

标签: php cron

我正在尝试将PHP文件设置为cron作业,其中该PHP文件包含其他PHP文件。

该文件本身位于/var/www/vhosts/domain.com/httpdocs/app/protected/classes/cron/runner.php

包含文件位于 /var/www/vhosts/domain.com/httpdocs/app/protected/config.php

如何在runner.php中包含该配置文件?我尝试过require_once('../../ config.php'),但它说文件不存在..我认为cron从不同的位置运行PHP。

cron工作如下..

/ usr / bin / php -q /var/www/vhosts/domain.com/httpdocs/app/protected/classes/cron/runner.php

有什么想法吗?

4 个答案:

答案 0 :(得分:15)

你的cron应该在运行PHP之前更改工作目录:

cd /var/www/vhosts/domain.com/httpdocs/app/protected/classes/cron/ && /usr/bin/php -q runner.php

请注意,如果该目录不存在,PHP将不会运行runner.php。

答案 1 :(得分:2)

您应该使用绝对路径。 cron可能没有从它所在的目录中运行脚本。

我建议使用:

require_once( dirname(__FILE__) '../../config.php )

__FILE__是一个特殊常量,指向您所在的文件。dirname(...)将为您提供目录,该目录将评估您希望包含的文件的绝对路径。

答案 2 :(得分:1)

类或cron是符号链接吗?我似乎记得php评估真实路径而不是符号路径。

考虑以下目录树:

/target/index.php

/ path / sym - > /目标

如果您要从php index.php执行/path/sym,则语句require_once('../require.php');将评估为require_once('/require.php');而不是require_once('/path/require.php');

答案 3 :(得分:1)

您可以将PHP脚本中的工作目录更改为该脚本的位置: chdir(__DIR__); (或者,如果您的PHP版本在5.3之前:chdir(dirname(__FILE__));) 然后你可以这样做: require_once('../../config.php')