我可以在中设置 PHP 包含路径 php.ini:

include_path = /path/to/site/includes/

但其他网站也会受到影响,这样就不好了。

我可以在每个文件的开头设置 PHP 包含:

$path = '/path/to/site/includes/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

但这似乎是一种不好的做法,而且会让事情变得混乱。

所以我可以将其包含在内,然后将其包含到每个文件中:

include 'includes/config.php';

或者

include '../includes/config.php';

这就是我现在正在做的事情,但是包含路径 config.php 会根据包含的内容而变化。

有没有更好的办法?有关系吗?

有帮助吗?

解决方案

如果您使用 apache 作为网络服务器,您可以使用以下命令覆盖(如果允许的话)设置 .htaccess 文件。看 PHP 手册 了解详情。

基本上你放了一个名为 .htaccess 在您的网站根目录中,其中包含一些 PHP ini 价值观。如果您将 Apache 配置为允许覆盖,则该站点将使用您的 PHP 配置中的所有值以及您在 .htaccess 文件。

只能与 PHP_INI_ALLPHP_INI_PERDIR 类型指令

正如我链接的页面中所述。如果您单击查看完整列表,您会看到包含路径是 PHP_INI_ALL 指示。

其他提示

恕我直言,埃里克·范·布拉克尔给出了最好的答案之一。

此外,如果您使用 Apache 和虚拟主机,您可以直接在其中设置包含内容。使用此方法,您不必记住将 php_admin 命令保留在 .htaccess 中。

用一个 php.ini 网站上的文件 , ,如果您的设置使用 PHP 作为 计算机图形图像处理 (共享主机上最常见的情况)与服务器范围的语法相同 php.ini;把它放入 .htaccess 如果你有 PHP 作为 Apache 模块(执行 phpinfo() 如果不确定):

php_value include_path "wherever"

请注意,每个文件夹 php.ini does 不影响 子文件夹.

为什么您认为附加到包含路径是不好的做法?

根脚本顶部附近的这段代码应该不会那么糟糕......

$path = '/path/to/site/includes/';
set_include_path($path . PATH_SEPARATOR . get_include_path());

恕我直言,主要优点是它的便携性并且不仅与 Apache 兼容

编辑:我看到了这种方法的一个缺点:性能影响小。看 http://www.geeksengine.com/article/php-include-path.html

根据您的主机的设置方式,您可能会被允许放置一个 php.ini 文件位于主目录的根目录中,并带有额外的配置指令。

您的应用程序应该有一个用 PHP 编写的配置文件。然后将其与相对页面一起包含到程序中的每个页面中。该配置文件将有一个变量用于包含目录、模板目录、图像目录等的路径。

您可以设置 include_path 也在你的 php.ini 文件中。我是一个 Perl 人员,所以我希望能够加载包含内容并拥有 include 做正确的事。我将所有包含内容都放在特定目录中,该目录被添加到 include_path. 。我可以做类似的事情

require_once "ClassName.php";

我不需要担心文件的相对路径或位置。

我也写过自己的 CustomRequire 做类似的事情

function CustomRequire ($file) {
    if(defined('MYINCLUDEPATH')) {
        require_once MYINCLUDEPATH . "/$file";
    } else {
        require_once $file;
    }
}

这样我就可以在以后改变我的做法。当然,您仍然需要找到一种方法来包含您的包含代码:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top