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

include_path = /path/to/site/includes/

但其他网站受到影响,这是不好的。

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

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

但这似乎是不好的做法,并且使事情变得混乱。

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

include 'includes/config.php';

要么

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

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

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

===============>>#1 票数:16 已采纳

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

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

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

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

===============>>#2 票数:7

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

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

===============>>#3 票数:4

如果您的设置使用PHP作为CGI (共享主机上最常见的情况),使用与服务器级php.ini相同的语法,请在网站根目录中使用php.ini文件; 如果你把PHP作为一个Apache模块,那就把它放到.htaccess phpinfo()如果不确定的话,做一个phpinfo() ):

php_value include_path "wherever"

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

===============>>#4 票数:3

为什么你认为追加包含路径是不好的做法?

在root脚本顶部附近的代码不应该那么糟糕......

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

恕我直言,其主要优势在于它的便携性和兼容性不仅仅与Apache有关

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

===============>>#5 票数:1

根据主机的设置方式,可能允许您使用额外的配置指令将php.ini文件放在主目录的根目录中。

===============>>#6 票数:1

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

===============>>#7 票数:0

您也可以在php.ini文件中设置include_path 我是一个perl家伙,所以我希望能够加载包含并include做正确的事情。 我将所有包含在特定目录中,并添加到include_path 我可以做的事情

require_once "ClassName.php";

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

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

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

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

  ask by Annan translate from so

未解决问题?本站智能推荐: