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

时间:2011-10-22 22:27:12

标签: php filestructure

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

[public]
[libs]
[crontab]
[logs]
[sessions]
[tmp]

config.php

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

公共文件夹中的每个页面都必须放置整个路径,因此请包含配置文件。问题是,当我将所有内容从本地计算机移动到公共服务器时,我必须遍历每个页面并更改配置文件中包含的路径。有没有更好的办法?也许在php.ini中设置路径或类似的东西?

感谢

4 个答案:

答案 0 :(得分:3)

在特定情况下,您可以使用:

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

首先解析到public目录,但将一个级别移回../以到达docroot之外的配置文件。


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

答案 1 :(得分:1)

我经常用来包含相对于webroot结构中特定位置的文件的技术是使用这样的include / require:

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

这样,只要文件以相同的方式保持彼此相对,代码库迁移就不需要更改任何硬链接或常量。

答案 2 :(得分:0)

你可以只为你的路径使用常量并改变它一次,并在每个路径上定义该常量 - 包含文件

您还可以查看包含路径 http://php.net/manual/en/function.set-include-path.php

答案 3 :(得分:0)

请参阅set_include_path()以及include_path ini设置的文档。