提问人:RichW 提问时间:2/20/2011 更新时间:7/1/2017 访问量:11998
PHP 包含在 cron 作业中
PHP include in a cron job
问:
我正在尝试将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
如何包含运行程序.php中的配置文件?我试着做require_once('../../config.php'),但它说该文件不存在。我假设 cron 从不同的位置或其他东西运行 PHP。
cron 作业如下。
/usr/bin/php -q /var/www/vhosts/domain.com/httpdocs/app/protected/classes/cron/runner.php
有什么想法吗?
答:
在运行 PHP 之前,您的 cron 应该更改工作目录:
cd /var/www/vhosts/domain.com/httpdocs/app/protected/classes/cron/ && /usr/bin/php -q runner.php
请注意,如果目录不存在,PHP 将不会运行 runner.php。
评论
../../conf
realpath(dirname(dirname(__FILE__))).'/conf
dirname(dirname(__FILE__)).'/conf'
dirname(__DIR__).'/conf'
classes 或 cron 是符号链接吗?我似乎记得 php 评估的是真实路径而不是符号路径。
请考虑以下目录树:
/target/index.php
/path/sym -> /target
如果要从那时开始执行,则该语句的计算结果将为 NOTphp index.php
/path/sym
require_once('../require.php');
require_once('/require.php');
require_once('/path/require.php');
应使用绝对路径。cron 可能没有从它所在的目录中运行脚本。
我建议使用:
require_once( dirname(__FILE__) '../../config.php )
__FILE__
是一个特殊常量,用于引用您所在的文件。 将为您提供目录,该目录将计算为您希望包含的文件的绝对路径。dirname(...)
评论
dirname(__FILE__)
__DIR__
.
您可以将 PHP 脚本中的工作目录更改为该脚本的位置:(或者,如果您的 PHP 版本低于 5.3:)
然后你可以做:chdir(__DIR__);
chdir(dirname(__FILE__));
require_once('../../config.php')
上一个:PHP/MySQL - 查找具有相似或匹配属性的项目
下一个:美国电话号码
评论