一般的编程语言在处理include中的相对目录时,都是以当前处理的文件作为基准。也就是说,如果A包含B,B包含C时,C再包含一个含相对路径的文件,那么路径是相对于C的。这样的处理很自然,符合人们的直觉,也便于开发出路径无关的程序包。可是PHP不这样,它优先相对工作目录来处理,并且如果路径中包含. ..的话,则只相对于当前工作目录。
一、绝对路径和相对路径常见用法
绝对路径示例:$droot="/var/www/html/";//网站根目录
require_once($droot."include/cfg.php");
使用上文第一种绝对路径方法,该方法虽然笨拙,不大好看,对于小WEB程序够用即可。
相对路径示例:
require_once("../include/cfg.php");
require_once("../../../include/metsky/cfg.php");
表示包含上一级目录include下的cfg.php文件。
二、补充参考用法
上文的路径设置方法对于简单的小项目来说路径问题并不明显,但是对于目录文件调用关系稍微复杂点,要想仍然使用上述相对路径方法则必须通过修改文件包含结构关系才可以,而绝对路径的使用又会让程序不规范,可移植性差,遇到这类问题时,可以试一下下面方法:1、如果目录结构简单,可以通过调整包含文件的层次结构来解决,仍然使用相对路径。
3、结合使用绝对路径和相对路径,有时为了赶进度可以先行让项目通过。
4、使用dirname(__FILE__)获取当前文件的目录路径,比如:
require_once(dirname(__FILE__)."../../include/cfg.php");
5、使用下面的这个语句可以把当前目录设置为当前文件的目录路径,也较为方便,尤其是交叉引用的时候非常有用。
chdir(dirname(__FILE__));
6、对于使用虚拟主机的用户可以在包含文件之前使用set_include_path()函数,比如:
set_include_path(‘./’.PATH_SEPARATOR.dirname(__FILE__));
require_once(‘include/cfg.php’);
7、通过辅助设置php配置文件中的的include_path参数进行查询路径,include_path是指将要用到的包含文件所在的目录,可以将经常include文件放到一个统一的目录里,然后把这个目录设置在配置文件php.ini的include_path参数后面,在需要使用这些包含文件的时候只需要包含其名称即可,比如<?php include "metsky_cfg.php"; ?>就可以了,而实际上metsky_cfg.php文件则是存在设置的文件目录里。
更多推荐
PHP include 路径
发布评论