小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

PHP 站點相對包含,路徑的問題解決方法(include,require)

 quasiceo 2015-05-13

以前看了,很多框架,基本上很少使用相對路徑包含。而一般很多做php web站點,喜歡用相對路徑。 認(rèn)為這樣,無論目錄放到那里。 只要跟另外目錄關(guān)系一致。那么就不會出現(xiàn)問題。如果一個站點,一般都認(rèn)為,如果用根目錄,經(jīng)常會改變網(wǎng)站地址,覺得很不方便。其實,我們從各大常見框架里面會發(fā)現(xiàn),基本上都是采用是絕對路徑方法。

  • 相對路徑帶來問題

我們有如下結(jié)構(gòu)的目錄。

<web>(網(wǎng)站根目錄)
├<a>文件夾
│ │
│ └a.php
├<b>文件夾
│ │
│ └b.php
└test.php

 

如果b.php 包含a.php (include(“../a/a.php”)) ,然后test.php 包含b.php (include(“b/b.php”)) ,我們發(fā)現(xiàn)很奇怪問題。

首先訪問:b.php 可以正常訪問, 然后訪問test.php

image

發(fā)現(xiàn),找不到 a.php了。 這里注意一個問題是:php 默認(rèn)相對路徑都是以,被訪問頁面所在路徑為準(zhǔn)的。無論一個入口頁面,里面包含多少文件,相對路徑,都是以這個頁面為準(zhǔn)。

如果訪問test.php 根路徑是:test.php,如果訪問b.php 相對路徑都以b.php 所在路徑為準(zhǔn)。剛剛頁面test.php 包含了b.php,b.php包含了a.php. 所有包含都以test.php 為準(zhǔn)的。

估計剛剛開始php學(xué)習(xí)朋友,經(jīng)常遇到這個問題,而且發(fā)現(xiàn)經(jīng)常出現(xiàn)一大堆警告影響大家學(xué)習(xí)的興趣。

  • 使用絕對路徑方法

各大開源框架基本上采用絕對路徑方法,這樣可以避免相對路徑因為包含訪問文件變了。基準(zhǔn)路徑變化,讓包含出現(xiàn)錯誤了。 所以,我們看看常見方法。

首先將網(wǎng)站基準(zhǔn)訂到一個固定文件。一般可以用下面方法實現(xiàn)。如:根目錄下面有個config.php文件。

<?php

define('Root_Path’,dirname(__FILE__));

__FILE__ 至的是當(dāng)前腳本路徑,在那個腳步php里面調(diào)用該變量,它的值就是該腳步的絕對路徑。

然后,任何其它頁面,在做包含時候,只需要包含了該config.php后。

<?php

包含config.php…..

include(Root_Path.”/文件路徑”);即可

 

  • 使用絕對路徑好處

使用解決路徑好處除了可以在大型項目中,包含時候更準(zhǔn)確定位到文件,不易產(chǎn)生錯誤外。還有另外一個好處,包含文件,性能會得到很大提升。

如果給一個相對位置包含,php查找該文件,一般會在set_include_path 函數(shù),設(shè)置的所有路徑里面去搜索。 我們知道,要一個一個去嘗試,列舉目錄,然后查找文件。這直接會消耗大的IO。 也會消耗很多性能。 如果我們用絕對包含,直接就可以準(zhǔn)確判斷出,文件是否存在。不會去set_include_path設(shè)置目錄去查找了。

以上問題,對于剛剛接觸到php大型項目開發(fā),可能會很容易遇到。歡迎討論!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多