19

我可以在以下位置设置 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会根据包含它的内容而改变。

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

4

7 回答 7

16

如果您使用 apache 作为网络服务器,您可以使用.htaccess文件覆盖(如果允许)设置。有关详细信息,请参阅PHP 手册

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

只能与PHP_INI_ALLPHP_INI_PERDIR类型指令一起使用

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

于 2008-08-23T21:43:16.687 回答
7

恕我直言,Erik Van Brakel 给出了最好的答案之一。

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

于 2008-08-24T15:16:42.537 回答
5

如果您的设置使用PHP作为CGI (共享主机上最常见的情况),使用与服务器范围内的php.ini相同的语法,请在网站根目录中使用php.ini文件;如果您将 PHP 作为 Apache 模块,请将其放入(如果不确定,请执行):.htaccessphpinfo()

php_value include_path "wherever"

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

于 2008-09-15T20:46:25.277 回答
3

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

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

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

恕我直言,主要优点是它不仅可移植且与 Apache 兼容

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

于 2010-09-01T14:22:14.963 回答
1

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

于 2008-08-24T14:57:55.420 回答
1

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

于 2009-04-29T17:06:28.023 回答
0

您也可以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;
    }
}

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

于 2008-08-23T23:11:12.890 回答