PHP require和include 路徑問題

來源:互聯網
上載者:User
??摘要:在學習ThinkPHP源碼的時候,涉及到多個檔案嵌套包含的問題,這時檔案路徑應該怎麼確定?將在這裡記錄。

首先

??本文主要參考這篇文章。他講的很詳細,但是對於實用主義者來說,用不了那麼多東西,我來講的簡單一些。

寫在前面:我這裡的所有路徑(均是伺服器絕對路徑表示)說明如下:

  • apache伺服器根目錄:?/home/pi/www/
  • 專案檔根目錄:??? /home/pi/www/mvcTest/2Test/
  • 項目入口檔案:???? /home/pi/www/mvcTest/2Test/index.php
  • 要包含的下一個檔案:? /home/pi/www/mvcTest/2Test/Framework/Framework.php
  • 再嵌套包含的檔案:?? /home/pi/www/mvcTest/2Test/Framework/Common/function.php

相對路徑

??相對路徑以 ./ 開始(還有 ../ 用的很少),意思是以當前檔案所在目錄作為參考目錄,但是這裡有個誤區,如果嵌套包含,就會出問題。
??問題在於PHP對於include require檔案的解釋是這樣的:

include (或 require)語句會擷取指定檔案中存在的所有文本/代碼/標記,並複製到使用 include 語句的檔案中。

??這就意味著,當index.php被調用的時候,下面兩個被引用的檔案內容,都被複製到了index.php一個檔案裡面。

所以:當嵌套的檔案裡面還需要include/require操作,使用相對路徑的話,那麼,參考的路徑其實是入口檔案所在的目錄,而不是當前檔案所在的目錄。

絕對路徑

??絕對路徑是使用伺服器(機器)檔案系統的絕對路徑,與apache伺服器的根目錄沒有關係。
??絕對路徑的使用比較簡單,不容易混淆出錯,下面提供一種技巧。

使用dirname(__FILE__);函數可以擷取當前檔案所在的絕對路徑,然後就可以不用管當前檔案的入口檔案在哪,使用擷取到的路徑,再拼接一下字串就OK了。

未確定路徑

??即路徑前面即不是 ./ 也不是 /
??這種東西不用去考慮了,使用上面兩種正規方法就夠了,不用管這個東西了。

<完>

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介紹了PHP require和include 路徑問題,包括了require方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.