码迷,mamicode.com
首页 > Web开发 > 详细

PHP中include引用导致不能再次相对引用文件的一个小问题

时间:2016-12-09 18:25:46      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:文件名   function   elf   字符串   request   返回   请求   lan   地址   

今天遇到一个问题: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__
    );
    var_dump($pathsarr);
}

 

PHP中include引用导致不能再次相对引用文件的一个小问题

标签:文件名   function   elf   字符串   request   返回   请求   lan   地址   

原文地址:http://www.cnblogs.com/warcraft/p/6150440.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!