PHP中include()的使用問題 (轉)
中include()的使用問題
常常見有人詢問關於使用include()時如何定位的問題,大體是這樣:
這樣一個檔案結構
xxxx--|
|-dirA-|
| |-A.php
| |-A2.php
|
|-dirB-|
|-B.php
A.php
////////////////////////////////////
echo('I am A.php . I have been included .'.'
'.chr(10));
include('A2.php');
?>
////////////////////////////////////
A2.php
////////////////////////////////////
echo('Hello , I am A2.php . I have been included .'.'
'.chr(10));
?>
////////////////////////////////////
B.php
////////////////////////////////////
echo('I am B.php . Now begin .');
include('../dirA/A.php');
?>
////////////////////////////////////
有人會遇到訪問B.php報錯的情況————無法找到A2.php,便很困惑的來到菜鳥集中營CSDN江湖求助。
看看大家的回答通常都是告訴無辜的提問者去檢查一下php.ini中有關include_path的設定是否正確,是否包含了當前路徑(用“.”表示)。偶也曾經做了一次不耐煩的大家,現在想起來真是————汗!
在php好後,通常php.ini中的inlcude_path被設定為.;c:phpincludes(平臺)或.:/php/includes(系列平臺,),可以看到其中都是包含當前路徑的。在一些Php分發中的php.ini中include_path前面用“;”註釋掉,這時的inlcude_path內建值為.;c:pear或.:/php4/pear(其中的“4”是因為我使用的Php版本為4.x)。這樣看來,問題通常都不是出在inlude_path變數值上(除非哪個whiteEat非把inlude_path改成外婆家!噢,偶旁邊的外婆家酒店酒菜不錯,價格公道、童叟無欺)。
其實在上面的大家和提問人之間還有一個常被忽略的事實:Php的版本————這一次是小版本差異。
在Php 4.0.x環境下,上面的例子是無法執行的,需要把A.php中的“include('A2.php');”改成“include('../dirA/A2.php');”,或者將A2.php複製一份放到目錄dirB中,這通常都不是我們期望的————任務量太大。
而在Php 4.2.x(含更高)環境下,上面的例子則可以通行無阻,並且前面所作修改後的指令碼、檔案系統結構也可以透過。
清晰了。問題出在不同版本對“.”的解釋不同。在4.0.x中,“.”僅僅被認為是(起始)指令碼的路徑;而在4.2.x中,它還包含當前檔案的路徑。從上面的例子中,當匯入文件A.php後,這時的“.”將同時指向B.php的路徑dirB和A.php的路徑dirA。
寫到這裡,忽然冒出一個問題:如果在4.2.x環境下,在dirB.php中剛好不幸也有一個A2.php檔案,那麼B.php最後會匯入哪個路徑下的A2.php呢?本來想把這個問題留給Php的MM們測試,然後請她們香高天下,但一想到壓榨她們不長的幾分鐘的擦胭抹粉的時間實在於心不忍(“幾”是 百 數量級的)。測試結果顯示將包含dirB下面的A2.php。
歡迎大家把更多的這類“小”問題貢獻出來給我們的菜鳥集中營。
注:上面的例子同樣適用於require方法(以及後來的include_once()、require_once())。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981873/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP中require和include路徑問題總結PHPUI
- 請教使用jsp:include的問題JS
- Linux下tomcat中include的問題LinuxTomcat
- php中 include,require,include_once,require_once 的區別PHPUI
- PHP中Autoload使用中的一些問題PHP
- Linux 中編譯 PHP 會遇到的問題(轉)Linux編譯PHP
- php--include 、requirePHPUI
- PHP中“==”運算子的安全問題PHP
- PHP 中 include 和 require 的概要及區別介紹PHPUI
- php.ini檔案中的include_path設定PHP
- 關於轉義符 在php正則中的匹配問題PHP
- [php]require&require_once&include&include_once的用法與區別PHPUI
- 急盼救命,關於JSP的include問題JS
- PHP中 mkdir: Permission denied 問題PHP
- PHP flock 檔案鎖的使用問題PHP
- PHP問題總結:PHP最佳化及高效提速問題小結(轉)PHP
- 開發Web應用程式中Cookie使用的問題 (轉)WebCookie
- laravel使用中遇到的問題Laravel
- jsp中include指令和include動作的區別JS
- PHPExcel匯出的問題,在PHP7中PHPExcel
- php問題PHP
- Typora 使用中的幾個問題
- java中的易混問題收集(轉)Java
- php編寫大型網站問題集 (轉)PHP網站
- PHP autoload與include效能比較PHP
- php關於金額比較引發的問題(轉)PHP
- HTML檔案中IncludeHTML
- Vue使用中遇到的程式碼問題Vue
- Linux ~ CentOS使用中遇到的問題LinuxCentOS
- CKEditor使用中遇到的問題解決
- Fragstas軟體使用中遇到的問題
- 關於jsp中轉發的問題JS
- VB中API的宣告特殊問題 (轉)API
- apache web 中的CGI應用問題(轉)ApacheWeb
- PHP 字串強制轉換為數值問題PHP字串
- 五個常見 PHP 資料庫問題(轉)PHP資料庫
- tomcat和resin,jsp:include問題,急呀,大家救救我~~~~~~~~~~~~~~~~~~TomcatJS
- [PHP]不同作業系統下PHP接收POST資料問題 (轉)PHP作業系統