PHP中include和require絕對路徑、相對路徑問題
-Advertisement-
Play Games
在寫PHP程式時,經常要用到include或require包含其他文件,但是各文件里包含的文件多了之後,就會產生路徑問題。 如下目錄: <web>(網站根目錄) ├<A>文件夾 │ │ │ └1.php ├<B>文件夾 │ │ │ └2.php └index.php 現在根目錄下的index.php ...
在寫PHP程式時,經常要用到include或require包含其他文件,但是各文件里包含的文件多了之後,就會產生路徑問題。
如下目錄:
<web>(網站根目錄)
├<A>文件夾
│ │
│ └1.php
├<B>文件夾
│ │
│ └2.php
└index.php
現在根目錄下的index.php要包含A文件夾內的1.php文件,則用include "./A/1.php"即可
而1文件夾內的1.php又包含了B文件夾內的2.php,則1.php內寫上include "../B/2.PHP"即可
可是要知道,當index.php包含了1.php之後,編譯是在index.php里進行的
也就是index.php所包含文件里的include都是相對於index.php的
那麼1.php被包含進index.php里了,那麼就要相對於index.php尋找2.php了
而上面說了,1.php里寫的是include "../B/2.php",現在編譯文件已經相對於網站根目錄了(即相對於index.php)
"../"則意味著還要再返回上一級目錄尋找,那麼怎麼會找得到。
在網上也尋找過一些方法,最好的辦法還是都採用絕對路徑方法較妥。
可以定義一個單入口文件,將要包含的文件包含進來
定義一個常量define("__ROOT__",dirname(__FILE__));,那麼在寫後面的文件過程中,只需要採用絕對方式,加上__ROOT__就行了。
require dirname(__FILE__) . '/library/Zend/Loader.php';
沒有留言:
張貼留言