我正在尝试将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 回答
你的cron应该在运行PHP之前更改工作目录:
请注意,如果该目录不存在,PHP将不会运行runner.php .
你应该使用绝对路径 . cron可能没有从它所在的目录中运行脚本 .
我建议使用:
require_once( dirname(__FILE__) '../../config.php )
__FILE__
是一个特殊常量,它指向您所在的文件 .dirname(...)
将为您提供目录,该目录将评估您希望包含的文件的绝对路径 .类或cron是符号链接吗?我似乎记得php评估真实路径而不是符号路径 .
考虑以下目录树:
/target/index.php
/ path / sym - > / target
如果您要从
/path/sym
执行php index.php
,则语句require_once('../require.php');
将评估为require_once('/require.php');
而不是require_once('/path/require.php');
您可以将PHP脚本中的工作目录更改为该脚本的位置:
chdir(__DIR__);
(或者,如果您的PHP版本在5.3之前:chdir(dirname(__FILE__));
)那么您可以执行以下操作:require_once('../../config.php')