当将配置文件放置在公共根目录之外时.如何在不定义路径的情况下调用每个页面


when placeing a config file outside the public root. how do i call it on every page without defining the path

这就是我的文件结构。(. .]是文件夹

[public]
[libs]
[crontab]
[logs]
[sessions]
[tmp]
config.php

将域设置为公共文件夹作为其根文件夹。其他所有内容,包括config.php文件,都在根目录之外。配置包含db连接信息和其他必要的设置。

每个页面在公共文件夹我必须把整个路径,包括配置文件。问题是,当我将所有内容从本地机器移动到公共服务器时,我必须遍历每个页面并更改配置文件包含的路径。有没有更好的办法?比如在php。ini中设置路径之类的?

谢谢

在这种情况下,您可以使用:

include("$_SERVER[DOCUMENT_ROOT]/../config.php");
# Note: special exception array syntax within double quotes.

它首先解析到public目录,但是向后移动一级../以到达根目录外的配置文件。


但是您也可以在.htaccess中使用SetEnv来定义另一个$_SERVER环境变量。

我经常使用的一种技术来包含相对于web浏览器结构中特定位置的文件,就是使用include/require:

require_once(dirname(__FILE__) . '/path/to/include.php');

这样,只要文件之间保持相同的相对关系,代码库迁移就不需要更改任何硬链接或常量。

你可以在你的路径中使用constant并修改一次,然后在每个路径包含的文件中定义该常量

您还可以查看include pathhttp://php.net/manual/en/function.set-include-path.php

有关include_path ini设置,请参见set_include_path()和文档。