PHP中include引用導致不能再次相對參照檔案的一個小問題

來源:互聯網
上載者:User

標籤:檔案名稱   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引用導致不能再次相對參照檔案的一個小問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.