当前位置:  开发笔记 > 编程语言 > 正文

如何格式化PHP include()绝对(而不是相对)路径?

如何解决《如何格式化PHPinclude()绝对(而不是相对)路径?》经验,为你挑选了4个好方法。

在我的PHP网站和各种嵌套目录的各个页面上,我想在相对于根的路径中包含特定文件.

我可以在这两个页面上放置什么单一命令......

http://www.example.com/pageone.php
http://www.example.com/somedirectory/pagetwo.php

...包括此页面:

http://www.example.com/includes/analytics.php

这不起作用:


这是在Windows上的IIS中托管吗?



1> J Cooper..:

你可以使用 include $_SERVER['DOCUMENT_ROOT'] . "/includes/analytics.php";



2> Zoredache..:

从PHP的角度来看,root是Web服务器上文件系统的顶层,而不是Web浏览器的根目录.

大多数人都会做以下其中一种.

在全局配置文件中定义常量,并在每次调用require/include时使用它.

或者他们使用这样的代码.

require_once realpath(dirname(__FILE__).'/config.php');
require_once realpath(dirname(__FILE__).'/lib/Database.php');

在某些情况下使用环境变量可能是危险的,并且是安全问题的根源.



3> Greg..:

正如@Stefan Mai所说,PHP没有"根"路径,但你可以很容易地定义一个 - 大多数网站都有一个每次都包含的页面(例如配置文件),你可以添加:

define('ROOT', dirname(__FILE__));

然后使用包含ROOT.'/includes/analytics.php';

一些非常有用的东西是auto_prepend指令,你可以在apache上使用.htaccess - 不确定在IIS上设置它(虽然你可以在PHP ini中有一个全局的).



4> gnud..:

如果为include()或require()(或*_once版本)提供绝对路径名,则将包含该文件.绝对路径名在unix上以"/"开头,在Windows上以驱动器号和冒号开头.

如果给出相对路径(任何其他路径),PHP将按顺序搜索配置值"include_path"中的目录,直到找到匹配项或没有其他目录要搜索.

因此,简而言之,要包含绝对文件名,请提供绝对文件名.另请参见函数realpath().

如果你想设置自己的"root",请看看这个问题(特别是我的回答当然:-)

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有