首页 文章

包括子文件的php文件包含在cron作业和网站中

提问于
浏览
0

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

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

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

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

cron工作的路径:

$ HOME / bin / updatephotos.php

课程的路径:

$ HOME / models / ....

公共Web根目录的路径:

$ HOME / www / ...

3 回答

  • 1

    您可以使用绝对路径来解决

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

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

    if (empty($_SERVER['DOCUMENT_ROOT'])) {
        $_SERVER['DOCUMENT_ROOT'] = __DIR__ . '/../www';
    }
    
  • 0

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

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

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

  • 1

    您的include框架正在使用系统变量来实现它的用途 . 它应该声明自己的常量,其他包含文件使用 . 然后,您可以在一个中心位置声明它,理想情况是在框架的主要包含点 .

相关问题