0

我有一个网站使用一堆类,这些类都保存在单独的 PHP 文件中,其中一些文件子包含额外的类文件,如下所示:

require_once($_SERVER['DOCUMENT_ROOT'].'/../models/database.model.php');

问题是我想运行一个使用同一组类文件的 cron 作业,但是当我执行子包含类文件的路径时会中断。

如何为包含的类文件指定路径,以便它们适用于我的网站和任何 cron 作业?

cron作业的路径:

$HOME/bin/updatephotos.php

上课路径:

$HOME/模型/....

公共网络根路径:

$HOME/www/...

4

3 回答 3

1

您可以使用绝对路径解决

require_once(__DIR__ . '/../models/database.model.php');

另一种方法是使用一点(丑陋的)hack:您可以自己填充 $_SERVER['DOCUMENT_ROOT']

if (empty($_SERVER['DOCUMENT_ROOT'])) {
    $_SERVER['DOCUMENT_ROOT'] = __DIR__ . '/../www';
}
于 2012-07-18T23:55:29.400 回答
1

经过进一步研究,我找到了以下解决方案:

function __autoload($class_name) {
    require_once realpath(dirname(__FILE__).'/../models/'.$class_name.'.model.php');
}

这适用于我的 cron 工作和网站。

于 2012-07-19T02:20:05.060 回答
0

您的包含框架正在将系统变量用于不打算用于的用途。它应该声明其他包含文件使用的自己的常量。然后你可以在一个中心位置声明它,最好是在你的框架的主要包含点。

于 2012-07-19T02:33:47.147 回答