亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP的包含文件函數require和include路徑總結

2024-09-04 11:49:14
字體:
來源:轉載
供稿:網友

require() 語句包含并運行指定文件,include()語句會獲取指定文件中存在的所有文本/代碼/標記,并復制到使用 include 語句的文件中,這兩個函數有相似的功能,現在我們來講講他們包含文件的路徑問題.

1 絕對路徑、相對路徑和未確定路徑

相對路徑,相對路徑指以.開頭的路徑,例如

./a/a.php (相對當前目錄)

../common.inc.php (相對上級目錄),

絕對路徑,絕對路徑是以 / 開頭或者windows下的 C:/ 類似的盤符開頭的路徑,全路徑不用任何參考路徑就可以唯一確定文件的最終地址,例如

/apache/wwwroot/site/a/a.php

c:/wwwroot/site/a/a.php

未確定路徑,凡是不以 . 或者 / 開頭、也不是windows下 盤符:/ 開頭的路徑,例如

a/a.php

common.inc.php,

開始以為這也是相對路徑,但在php的include/require包含機制中,這種類型的路徑跟以 . 開頭的相對路徑處理是完全不同的,require './a.php' 和 require 'a.php' 是不同的.

下面分析這三種類型包含路徑的處理方式:首先記住一個結論:如果包含路徑為相對路徑或者絕對徑,則不會到include_path(php.ini 中定義的include_path環境變量,或者在程序中使用set_include_path(...)設置)中去查找該文件.

測試環境說明

注意:下面的討論和結論基于這樣的環境:假設 A=http://www.xxx.com/app/test/a.php,再次強調下面的討論是針對直接訪問A的情況.

2.相對路徑:

相對路徑需要一個參考目錄才能確定文件的最終路徑,在包含解析中,不管包含嵌套多少層,這個參考目錄是程序執行入口文件所在目錄。

示例1

A中定義 require './b/b.php'; // 則B=[SITE]/app/test/b/b.php

B中定義 require './c.php'; // 則C=[SITE]/app/test/c.php 不是[SITE]/app/test/b/c.php

示例2

A中定義 require './b/b.php'; // 則B=[SITE]/app/test/b/b.php

B中定義 require '../c.php'; // 則C=[SITE]/app/c.php 不是 [SITE]/app/test/c.php

示例3

A中定義 require '../b.php'; //則B=[SITE]/app/b.php

B中定義 require '../c.php'; //則C=[SITE]/app/c.php 不是 [SITE]/c.php

示例4:

A中定義 require '../b.php'; // 則B=[SITE]/app/b.php

B中定義 require './c/c.php'; / /則C=[SITE]/app/test/c/c.php 不是 [SITE]/app/c/c.php

示例5

A中定義 require '../inc/b.php'; // 則B=[SITE]/app/inc/b.php

B中定義 require './c/c.php'; // 則C還是=[SITE]/app/test/c/c.php 不是 [SITE]/app/inc/c/c.php

示例6

A中定義 require '../inc/b.php'; // 則B=[SITE]/app/inc/b.php

B中定義 require './c.php'; // 則C=[SITE]/app/test/c.php 不是 [SITE]/app/inc/c.php

3. 絕對路徑

絕對路徑的比較簡單,不容易混淆出錯,require|inclue 的就是對應磁盤中的文件.

require '/wwwroot/xxx.com/app/test/b.php'; // Linux中

require 'c:/wwwroot/xxx.com/app/test/b.php'; // windows中

dirname(__FILE__)計算出來的也是一個絕對路徑形式的目錄,但是要注意__FILE__是一個Magic constants,不管在什么時候都等于寫這條語句的php文件所在的絕對路徑,因此dirname(__FILE__)也總是指向寫這條語句的php文件所在的絕對路徑,跟這個文件是否被其他文件包含使用沒有任何關系。

示例1

A中定義 require '../b.php'; // 則B=[SITE]/app/b.php

B中定義 require dirname(__FILE__).'/c.php'; // 則B=[SITE]/app/c.php

示例2

A中定義 require '../inc/b.php'; // 則B=[SITE]/app/inc/b.php

B中定義 require dirname(__FILE__).'/c.php'; // 則B=[SITE]/app/inc/c.php 始終跟B在同一個目錄

結論:不管B是被A包含使用,還是直接被訪問

B如果 require dirname(__FILE__).'/c.php'; // 則始終引用到跟B在同一個目錄中的 c.php文件;

B如果 require dirname(__FILE__).'/../c.php'; // 則始終引用到B文件所在目錄的父目錄中的 c.php文件;

B如果 require dirname(__FILE__).'/c/c.php'; // 則始終引用到B文件所在目錄的c子目錄中的 c.php文件;

4.未確定路徑

首先在逐一用include_path中定義的包含目錄來拼接[未確定路徑],找到存在的文件則包含成功退出,如果沒有找到,則用執行 require語句的php文件所在目錄來拼接[未確定路徑]組成的全路徑去查找該文件,如果文件存在則包含成功退出,否則表示包含文件不存在,出錯。 未確定路徑比較容易搞混不建議使用。

5.解決方案

由于“相對路徑”中的“參照目錄”是執行入口文件所在目錄,“未確定”路徑也比較容易混淆,因此最好的解決方法是使用“絕對路徑”; 例如b.php的內容如下,無論在哪里require b.php都是以b.php的路徑為參照來require c.php的

$dir = dirname(__FILE__);

require($dir . '../c.php');

或者定義一個通用函數 import.php,將其設置為“自動提前引入文件”,在php.ini做如下配置.

更改配置項(必須)auto_prepend_file = "C:xampphtdocsauto_prepend_file.php"

更改配置項(可選)allow_url_include = On

import.php內容如下:

  1. function import($path) { 
  2. $old_dir = getcwd(); // 保存原“參照目錄” 
  3. chdir(dirname(__FILE__)); // 將“參照目錄”更改為當前腳本的絕對路徑 
  4. require_once($path); //開源軟件:Vevb.com 
  5. chdir($old_dir); // 改回原“參照目錄” 

這樣就可以使用import()函數來require文件了,無論包含多少級“參照目錄”都是當前文件.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美日韩高清| 精品人伦一区二区三区蜜桃网站| 国产亚洲精品久久久久久777| 亚洲成在人线av| 精品中文字幕在线2019| 神马久久久久久| 在线观看欧美视频| 久久久久久久久久久成人| 亚洲国产高清高潮精品美女| 久久理论片午夜琪琪电影网| 国产亚洲综合久久| 在线播放国产一区二区三区| 国产一区二区美女视频| 97超视频免费观看| 高潮白浆女日韩av免费看| 亚洲国产高潮在线观看| 亚洲人午夜精品| 久久久噜噜噜久久中文字免| 成人免费视频a| 欧美理论电影在线播放| 亚洲国产精品国自产拍av秋霞| 亚洲自拍中文字幕| 热久久99这里有精品| 欧美日韩国产成人在线| 91精品美女在线| 日本欧美精品在线| 亚洲女人被黑人巨大进入al| 欧美精品18videos性欧美| 亚洲桃花岛网站| 视频一区视频二区国产精品| 亚洲护士老师的毛茸茸最新章节| 亚洲精品视频在线播放| 国产精品永久免费观看| 青草青草久热精品视频在线观看| 亚洲精品永久免费精品| 综合136福利视频在线| 在线观看91久久久久久| 日韩性xxxx爱| 日韩精品免费一线在线观看| 中文字幕在线看视频国产欧美| 中文字幕国产亚洲| 日韩中文字幕第一页| 亚洲自拍偷拍第一页| 欧美午夜视频在线观看| 免费97视频在线精品国自产拍| 91麻豆桃色免费看| 国语自产精品视频在免费| 国产日韩欧美夫妻视频在线观看| 国产精品91久久久| 一色桃子一区二区| 欧美天堂在线观看| 欧美精品video| 午夜精品一区二区三区在线视频| 欧美日韩国产第一页| 国产欧美精品日韩精品| 欧美丝袜美女中出在线| 亚洲欧美在线一区二区| 欧美日韩国产综合视频在线观看中文| 国产成人激情小视频| 91精品国产综合久久男男| 精品调教chinesegay| 欧美一区二粉嫩精品国产一线天| 国产日韩欧美在线观看| 亚洲欧洲日本专区| 91精品国产综合久久男男| 欧美xxxx18性欧美| 久久91精品国产91久久久| 久久久国产影院| 日本成人精品在线| 91高清免费视频| 136fldh精品导航福利| 欧美高清理论片| 北条麻妃一区二区三区中文字幕| 69**夜色精品国产69乱| 2019中文字幕免费视频| 日本免费一区二区三区视频观看| 自拍亚洲一区欧美另类| 国产在线98福利播放视频| 视频直播国产精品| 狠狠久久亚洲欧美专区| 国产精品精品久久久久久| 成人av.网址在线网站| 91av视频在线| 亚洲人成电影在线观看天堂色| 一区二区三区精品99久久| 午夜精品福利在线观看| 精品久久久久久亚洲国产300| 色香阁99久久精品久久久| 欧美精品在线网站| 日韩av网站在线| 亚洲a区在线视频| 成人精品福利视频| 91久久国产婷婷一区二区| 国产精品一区二区久久精品| 亚洲精品乱码久久久久久金桔影视| 欧美精品一区二区免费| 91亚洲精品一区二区| 亚洲丝袜一区在线| 成人免费福利视频| 亚洲精品小视频在线观看| 亚洲免费中文字幕| 亚洲美女在线看| 国产亚洲成精品久久| 国产精品户外野外| 国产精品海角社区在线观看| 国产经典一区二区| 国产精品av网站| 日韩国产精品一区| 激情久久av一区av二区av三区| 亚洲欧美999| 2019中文字幕在线免费观看| 久操成人在线视频| 国产日韩欧美在线观看| 91精品在线一区| 日韩精品视频三区| 国产一区二区三区在线观看视频| 国产精品电影一区| 国语自产在线不卡| 亚洲欧美www| 成人欧美一区二区三区黑人孕妇| 亚洲色图日韩av| 曰本色欧美视频在线| 粉嫩av一区二区三区免费野| 亚洲午夜色婷婷在线| 夜夜嗨av色一区二区不卡| 国产精品对白刺激| 精品性高朝久久久久久久| 亚洲欧美精品中文字幕在线| 国产mv免费观看入口亚洲| 91极品女神在线| 在线播放国产一区中文字幕剧情欧美| 欧美性极品xxxx做受| 国产精品久久在线观看| 懂色av一区二区三区| 亚洲人精品午夜在线观看| 欧美日韩第一页| 自拍偷拍亚洲区| 国产剧情日韩欧美| 国产精品激情自拍| 热久久99这里有精品| 超碰日本道色综合久久综合| 中文国产亚洲喷潮| 91免费看视频.| 国产一区视频在线| 久久综合色影院| 日本aⅴ大伊香蕉精品视频| 日本不卡高字幕在线2019| 欧美日韩国产综合视频在线观看中文| 国产成人精品视| 国产在线精品自拍| 欧美日韩国产精品一区二区不卡中文| 日韩欧美亚洲范冰冰与中字| 欧美特黄级在线| 国产精品一区二区电影| 亚洲色图av在线| 国产91精品久久久久| 精品无人区太爽高潮在线播放| 中文字幕在线看视频国产欧美| 久久久噜久噜久久综合| 亚洲成人性视频| 欧美精品videosex性欧美| 午夜精品视频在线| 欧美极品第一页| 国产精品1区2区在线观看|