这就是我的文件结构。(. .]是文件夹
[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()
和文档。