我有一个网站,它使用了一堆类,这些类都保存在单独的PHP文件中,其中一些文件还包括其他类文件,如下所示:
require_one($_SERVER['DOCUMENT_ROOT']./../models/database.model.php');
问题是,我想运行一个使用相同类文件集的cron作业,但当我执行子包含类文件的路径时,会中断。
我如何为包含的类文件指定路径,以便它们适用于我的网站和任何cron作业?
cron作业的路径:
$HOME/bin/updatephotos.php
课程路径:
$HOME/型号/。。。。
公共web根路径:
$HOME/www/。。。
您可以使用绝对路径进行求解
require_once(__DIR__ . '/../models/database.model.php');
另一种选择是使用一个小的(丑陋的)破解:你可以在自己的上填充$_SERVER['DOCUMENT_ROOT']
if (empty($_SERVER['DOCUMENT_ROOT'])) {
$_SERVER['DOCUMENT_ROOT'] = __DIR__ . '/../www';
}
经过进一步研究,我找到了以下解决方案:
function __autoload($class_name) {
require_once realpath(dirname(__FILE__).'/../models/'.$class_name.'.model.php');
}
这适用于我的cron工作和网站。
您的include框架正在使用一个系统变量,而该变量并非用于此用途。它应该声明自己的常量,其他包含文件使用该常量。然后,您可以在一个中心位置声明它,最好是在框架的主要包含点中。