包括服务器上任何位置的文件

时间:2014-01-31 03:43:55

标签: php apache httpd.conf

我的网站在生产服务器上运行得很好。我已将其移至另一个Web服务器。 (VPS)。

让我用例子解释你: 目录结构:

includes/
        header.php
business/
        index.php
        some other files...
index2.php

在我之前的版本中,我使用了

include_once(includes/header.php)

在index.php和index2.php中。它运行正常。但在我的新服务器设置中,它给出了关于路径的错误(显而易见)。

ERROR:

include_once(includes/header.php): failed to open stream: No such file or directory

因此:

Fatal error: Class 'EncryptionClass' not found

我认为我需要做一些服务器配置。但是,我不知道怎么样? 请指导我。如果您想了解更多信息,请与我们联系。

3 个答案:

答案 0 :(得分:3)

如果使用PHP 5.3+尝试使用:

include_once(__DIR__.'/includes/header.php');

DIR是一个魔术常量,它将返回文件所在的完整目录。

答案 1 :(得分:2)

您可以提供包含的绝对文件系统路径:

include_once($_SERVER['DOCUMENT_ROOT'] . "/includes/header.php");

答案 2 :(得分:1)

我只是将您的includes目录添加到include_path。例如,在index2.php

set_include_path(implode(PATH_SEPARATOR, [
    __DIR__ . '/includes', // relative to this file, index2.php
    get_include_path()
]));

include_once 'header.php';

,同样在business/index.php ...

set_include_path(implode(PATH_SEPARATOR, [
    __DIR__ . '/../includes', // relative to this file, business/index.php
    get_include_path()
]));

include_once 'header.php';

就个人而言,我会使用PSR-0文件到类名称映射并配置自动加载器,例如

包括/ EncryptionClass.php

class EncryptionClass { ... }

index2.php

spl_autoload_register(function($class) {
    require_once __DIR__ . '/includes/' . $class . '.php';
});

$encryptionClass = new EncryptionClass();