PHP中include引用导致不能再次相对引用文件的一个小问题
Posted cowpea
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中include引用导致不能再次相对引用文件的一个小问题相关的知识,希望对你有一定的参考价值。
今天遇到一个问题:php,incldue_once引入多次文件,多层引用,所以,不同目录下的文件要使用一个文件得先确定目录,比如(下例是提取出来的精简例子,组织的有点乱乱的):
/homepage/index.php文件include引入了/homepage/temp1/index.php
首页文件(/homepage/temp1/index.php)以及 列表文件(/homepage/temp1/news_list.php)
都引入了一个top.php文件,里面需要访问homepage下的a.png文件,现在需要不通过绝对路径,通过相对路径访问,但是
首页文件(/homepage/temp1/index.php)是通过/homepage/index.php访问的,$_SERVER["PHP_SELF"] 输出:/blog/Homepage/index.php
列表文件(/homepage/temp1/news_list.php)是通过/homepage/temp1/news_list.php访问的,$_SERVER["PHP_SELF"] 输出:/blog/Homepage/temp1/news_list.php
现在如果有变量可以直接锁定到固定的目录下就Ok了,
function chdirdir(){//锁定homepage $dir=dirname($_SERVER["PHP_SELF"]); while(strpos($dir,\'temp\')!==false){ $dir=dirname($dir); } return $dir; }
判断路径中有没有temp字符串,有就去掉/后取上级...
现在在首页和列表都可以如此调用:
$dirx=chdirdir(); echo "<img src=$dirx/a.png>";
虽然dirname()介绍为:本函数返回去掉文件名后的目录名。但是发现它可以每次取/后面字符以达到取到目录效果,这里用了这个小bug或者feature。
p.s.还是用框架好,这次这个领导又一意孤行的要逼死谁要用原生的。TP用习惯了这次在原生里还写了类似的U方法,不过比TP的弱多了,其实有点像ajax执行方式。
本来想用chdir(),可能不会用,最后也没用上。
通过 php应用路径变量问题总结 整理了一个输出路径的函数,
function paths(){ $pathsarr=array( \'当前请求的 Host:\'=>$_SERVER["HTTP_HOST"], \'请求执行文件的相对地址:\'=>$_SERVER["PHP_SELF"], \'实际执行文件相对地址:\'=>$_SERVER["SCRIPT_NAME"], \'实际执行文件的绝对路径:\'=>$_SERVER["SCRIPT_FILENAME"], \'实际执行代码的绝对路径:\'=>__FILE__, \'url请求中包括/和之后的所有内容:\'=>$_SERVER["REQUEST_URI"], \'url请求中?之后的内容:\'=>$_SERVER["QUERY_STRING"], \'文档根目录:\'=>$_SERVER["DOCUMENT_ROOT"], \'请求执行文件的的文件名:\'=>basename($_SERVER["PHP_SELF"]), \'实际执行文件的文件名:\'=>basename($_SERVER["SCRIPT_NAME"]), \'实际执行文件的文件名:\'=>basename($_SERVER["SCRIPT_FILENAME"]), \'实际执行代码的文件名:\'=>basename(__FILE__), \'请求执行文件的的所在目录:\'=>dirname($_SERVER["PHP_SELF"]), \'实际执行文件的所在目录:\'=>dirname($_SERVER["SCRIPT_NAME"]), \'实际执行文件的所在目录:\'=>dirname($_SERVER["SCRIPT_FILENAME"]), \'实际执行代码的所在目录:\'=>dirname(__FILE__), \'dir:\'=>__DIR__ //dirname(__FILE__)和__DIR__一样一样的 ); var_dump($pathsarr); }
以上是关于PHP中include引用导致不能再次相对引用文件的一个小问题的主要内容,如果未能解决你的问题,请参考以下文章