程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 淺談php中使用絕對路徑和相對路徑

淺談php中使用絕對路徑和相對路徑

編輯:關於PHP編程

下面看兩段代碼:

      代碼一:相對地址訪問

[php] 
<meta http-equiv="Content-Type"content="text/html;charset=GBK"> 
 
<?php  
    echo $_SERVER['DOCUMENT_ROOT']; 
?> 
    <img src="../1.jpg" /> 


      代碼二:絕對地址訪問

[php]
<meta http-equiv="Content-Type"content="text/html;charset=GBK"> 
 
<?php  
    echo $_SERVER['DOCUMENT_ROOT']; 
?> 
    <img src="C:/Program Files/Zend/Apache2/htdocs/1.jpg" /> 
 
先把這兩個放一下,讓我們來講純的html代碼(ps:現在是測試,那麼我就寫的簡略點,但是能得出結果)

    代碼一:相對地址 (test_image_1.html)

[html] 
<img src="../1.jpg" /> 
     代碼二:絕對地址 (test_image_2.html)
[html] view plaincopy
<img src="C:/Program Files/Zend/Apache2/htdocs/1.jpg" /> 

(ps:圖片目錄:C:/Program Files/Zend/Apache2/htdocs/1.jpg
          html目錄:C:/Program Files/Zend/Apache2/htdocs/test_image/)

備注:本機上安裝了appache,是Zend的融合包中的。

    兩種方式,第一種是直接雙擊打開文件,test_image_1和test_image_2都是可以打開的,URL中顯示的是C:/Program Files/Zend/Apache2/htdocs/test_image/test_image_1,這樣圖片都是可以顯示的。

    第二種方式,通過appache訪問,使用URL:127.0.0.1/test_image/test_image_1訪問,結果是使用相對路徑的可以正常實現,絕對路徑的不能顯示。

  
   查了很多資料,終於可以得出結論了。直接打開html文件,因為在你的計算機下,那麼絕對路徑就可以輕松的訪問。但是通過WEB訪問,那麼WEB默認的根目錄是htdocs/,在你計算機中,這個目錄是C:/Program Files/Zend/Apache2/htdocs/但是WEB不怎麼認為,在它的認識裡面不知道有c:這玩意兒。所以你認為的絕對路徑,是在你計算機裡面的絕對路徑,但是通過WEB不認識這個路徑。

  正確的方式應該是如下兩代碼:

   代碼一:相對地址 (test_image_1.html)

[html] 
<img src="../1.jpg" /> 
   相對路徑完全沒問題。    所以一般都是建議使用相對路徑便於移植。
代碼二:絕對地址 (test_image_2.html)
[html] view plaincopy
<img src=/1.jpg" /> 
   這裡的跟目錄是/所以這樣才是絕對路徑。
    如果你的圖片,換了個位置,在你計算機絕對路徑下是C:/Program Files/Zend/Apache2/htdocs/111/222/333/1.jpg

    那麼代碼就應該寫成:

[html] 
<img src=/111/222/333/1.jpg" /> 
    綜上所訴,不要把計算機的絕對路徑和WEB服務器的絕對路徑搞混了。
       經過上面的講解,應該理解html方式的絕對路徑和相對路徑了。

       那麼讓我們來看看文章開頭給出的PHP的形式。

       代碼一:相對地址訪問 test_image_1.php
[php]
<meta http-equiv="Content-Type"content="text/html;charset=GBK"> 
 
<?php  
    echo $_SERVER['DOCUMENT_ROOT']; 
?> 
    <img src="../1.jpg" /> 


      代碼二:絕對地址訪問 test_image_2.php
[php] view plaincopy
<meta http-equiv="Content-Type"content="text/html;charset=GBK"> 
 
<?php  
    echo $_SERVER['DOCUMENT_ROOT']; 
?> 
    <img src="C:/Program Files/Zend/Apache2/htdocs/1.jpg" /> 
     首先要理解PHP的執行方式,當你訪問一個PHP的時候,會觸發此PHP運行,PHP經過appache解析後(言外之意,就是說php已經運行完了,顯示了些結果),生成了一下HTML代碼,也就是簡單的說,到你手上的php,其實就可html一樣。php是在服務器端運行完畢然後再送到你的手裡的。所以剛開始我也沒完全理解,用php做一些動作,比如提交表格什麼的,其實不是php的事了,而是html的動作。到你手裡的,能顯示的,是披著.php後綴的,html代碼。
     在說說在PHP眼裡的絕對地址,當然,php認識你計算機的絕對路徑了,比如你要用php打開一個文件,用php讀取本機上一個圖片的大小,分辨率什麼的,完全可以使用絕對路徑(相對路徑更沒有問題)。

     但是PHP執行完後,將會把結果在你的網頁端顯示,那麼比如:

[php] 
<img src="C:/Program Files/Zend/Apache2/htdocs/1.jpg" /> 
這代碼,雖然寫在PHP文件當中,但是他只是HMTL代碼,因此此時就不光PHP的事了,而是html上馬了,而HTML和WEB有關,WEB不認識你這個路徑了(原因上面已經講了)。所以現在是WEB不認識計算機的絕對路徑,而不是你的PHP不認識。
    

    在提一點,WEB的根目錄是/但是,你的圖片在它認為的根目錄上一級,也是可以訪問的,代碼如下:

[html] 
img src="../../1.jpg" /> 
    (原先1.jpg在跟目錄下,而html代碼放在/image_test/下,所以要../1.jpg,才能訪問,
     而現在1.jpg在根目錄上一級,那麼我們就再回退一級就可以訪問到了,../../1.jpg)
 作者:wolinxuebin

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved