例如,这是一个好主意吗?
require_once($_SERVER['DOCUMENT_ROOT'].'/include.php');
如果您在同一台服务器上有两个虚拟主机,一个用于实时,一个用于开发,并且具有不同的 Apache DocumentRoots,则当包含源未知且可能位于任何目录中时,这将避免必须包含绝对路径。
(注意:下一节中的文件路径是相对于网络根目录的。它们实际上就像/var/www/app/core/init.php
, where /var/www/app
是网络根)
例如:我有一个 /core/init.php ,它是使用网站各处的相对路径调用的(/file.php
, /dir/file.php or /dir/dir/file.php
).
这个 init.php 然后包含几个功能页面,在基金目录中,一个子目录/core
(as in /core/func/userfunctions.php
).
所以,在 init.php 中,我可以使用$_SERVER
方法,因为如果我使用相对路径并尝试从像这样的页面调用函数,它就会中断/dir/file.php
.
我看不出有什么问题,但一般来说会出现什么问题?
我见过这样的案例$_SERVER['DOCUMENT_ROOT']
未设置或不是您所期望的(即未在 CLI 或旧 IIS 中设置,或在某些 CGI 设置中无效)。
因此你可以使用dirname(__FILE__)
获取调用该行的脚本的路径。然后您可以从那里引用相对路径,例如
include dirname(__FILE__) . '/../../other/file.php';
当文件的目录结构已知且不会更改时,我会使用上述方法。
If DOCUMENT_ROOT
不可用,以下是合适的替代品:
substr($_SERVER['SCRIPT_FILENAME'], 0, -strlen($_SERVER['SCRIPT_NAME']));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)