国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 後端開發(fā) php教程 PHP中路徑問(wèn)題的解決方案_PHP教程

PHP中路徑問(wèn)題的解決方案_PHP教程

Jul 21, 2016 pm 04:09 PM
perl php 關(guān)於 包含 引言 解決方案 路徑


PHP中路徑問(wèn)題的解決方案 引言:
關(guān)於PERL與PHP中的包含路徑一直是個(gè)比較難解的問(wèn)題,主要是與作業(yè)系統(tǒng)和WEB伺服器有關(guān),不可能非常智慧化的解決這個(gè)路徑問(wèn)題。相對(duì)於PERL,PHP的路徑好得多,解決起來(lái)也容易得多,因?yàn)镻HP的相對(duì)路徑在PHP程式中的任何場(chǎng)合都可以使用,而不像PERL在某些語(yǔ)句中必須用絕對(duì)路徑而導(dǎo)致移植的極為複雜。

基於此,在PHP中,我設(shè)計(jì)了一個(gè)絕對(duì)穩(wěn)健的解決方案,如下所述。

原則:
使用相對(duì)路徑,但在相對(duì)路徑中用絕對(duì)路徑(有點(diǎn)繞,待會(huì)兒詳解),一是可以保證可移植性,二是可以方便地修改,三是公式化且結(jié)構(gòu)清晰明了,易於擴(kuò)展。

步驟詳解:
1.先確定好一個(gè)程式的根目錄,注意是檔案系統(tǒng)下的,不是WEB伺服器下的虛擬目錄,不過(guò)一般情況下該目錄下的子目錄的相對(duì)路徑與URL下該目錄的虛擬子目錄是相同的。
2、在定義好的程式根目錄下的每個(gè)子目錄下(其實(shí)不一定是每個(gè),依需求)建立一個(gè)settings.php,裡面定義一個(gè)變數(shù)或是常數(shù)(常數(shù)比較好,因?yàn)樽饔糜虮容^大),如APPROOT,但這個(gè)APPROOT卻不是絕對(duì)路徑,而是該目錄相對(duì)於你指定的程式根目錄的相對(duì)路徑。
3、在此目錄下的所有程式入口文件(也即第一個(gè)包含其它文件的文件,或是允許直接在瀏覽器中瀏覽的文件)中第一句寫上require_once('settings.php ');,但要注意,所有被包含檔案最好不要加此句-其實(shí)加上也可以,因?yàn)槟憧梢栽趕ettings.php中寫上if(!defined(APPROOT)) define(APPROOT, '. ./..');這類的語(yǔ)句以防重定義。
4、如果你要包含其它文件,無(wú)論是直接還是間接地包含,都可以寫成include(APPROOT.$path);,這裡$path為被包含文件相對(duì)於你所指定的程序根目錄的絕對(duì)路徑。

原理:
定下的程式根目錄是相對(duì)路徑,但具體的目錄位置是相對(duì)於那個(gè)根目錄的絕對(duì)路徑,兩者組合起來(lái)就是具體檔案相對(duì)於程式根目錄的相對(duì)路徑了。例如目錄c:wwwrootapp為你指定的程式根目錄,然後有這麼兩個(gè)檔案c:wwwrootappaindex.php和c:wwwrootappbinc.php。對(duì)子目錄a來(lái)說(shuō),APPROOT是'..',而對(duì)程式根目錄來(lái)說(shuō),inc.php的絕對(duì)路徑是$path='/b/inc.php',兩者組合為'../b /inc.php'。如果要在index.php中包含inc.php就要寫成include('../b/inc.php');,而這個(gè)路徑不就剛好是剛才組合而成的APPROOT.$path嗎?


結(jié)論:
經(jīng)過(guò)以上處理,各個(gè)路徑絕對(duì)整齊劃一,唯一羅嗦一點(diǎn)的就是每個(gè)目錄下要定義一下這個(gè)APPROOT,但每個(gè)目錄下只需在本目錄的settings.php中定義一次就夠了。如果你整個(gè)程式只有一個(gè)入口文件,如index.php,而其它文件全部都是直接或是間接地被包含進(jìn)這個(gè)唯一的入口文件的話,就只需在index.php的所在目錄下的settings.php中定義一次就OK了。如果有朋友做過(guò)Delphi的工程並對(duì)工程文件研究過(guò)的話,就會(huì)發(fā)現(xiàn)我剛才說(shuō)的一個(gè)程式只有一個(gè)主入口文件的情況與Delphi的工程十分相似,因?yàn)镈elphi除了一個(gè)主程式檔(dpr檔) ,其餘的全部是單元文件或是資源文件,都不能獨(dú)立執(zhí)行。在PHP中,如果這種情況出現(xiàn),只需定義一次APPROOT,並在主程式檔案中第一句話寫成require_once('settings.php');,而以後所有的包含全都可以用include(APPROOT.$ path);,就保證不會(huì)有任何問(wèn)題,除非你不會(huì)寫這個(gè)「包含檔案相對(duì)於程式根目錄的絕對(duì)路徑」$path。

這個(gè)方法我用了不只一次,收效很好。另外還可以參考JSP的WEB-INFO中路徑的定義方式。

我這個(gè)是以不變應(yīng)萬(wàn)變的公式化的方案,如果有朋友有更好的方案,歡迎提出討論!如有不明白的也歡迎提出。

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/314623.htmlTechArticlePHP中路徑問(wèn)題的解決方案引言: 關(guān)於PERL與PHP中的包含路徑一直是個(gè)比較難解的問(wèn)題,主要與作業(yè)系統(tǒng)和WEB伺服器有關(guān),不可能非常智...
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

如何將兩個(gè)PHP陣列組合獨(dú)特的值? 如何將兩個(gè)PHP陣列組合獨(dú)特的值? Jul 02, 2025 pm 05:18 PM

要合併兩個(gè)PHP數(shù)組並保留唯一值,有兩種主要方法。 1.對(duì)於索引數(shù)組或僅需值去重的情況,使用array_merge和array_unique組合:先用array_merge($array1,$array2)合併數(shù)組,再用array_unique()去重,最終得到包含所有唯一值的新數(shù)組;2.對(duì)於關(guān)聯(lián)數(shù)組且希望保留第一個(gè)數(shù)組中的鍵值對(duì)時(shí),使用 運(yùn)算符:$result=$array1 $array2,這將確保第一個(gè)數(shù)組中的鍵不會(huì)被第二個(gè)數(shù)組覆蓋。這兩種方法分別適用於不同場(chǎng)景,根據(jù)是否需要保留鍵名或只關(guān)注

如何使用PHP退出功能? 如何使用PHP退出功能? Jul 03, 2025 am 02:15 AM

exit()是PHP中用於立即終止腳本執(zhí)行的函數(shù),常見用途包括:1.在檢測(cè)到異常情況時(shí)提前終止腳本,如文件不存在或驗(yàn)證失敗;2.調(diào)試時(shí)輸出中間結(jié)果並停止執(zhí)行;3.結(jié)合header()重定向後調(diào)用exit()防止後續(xù)代碼執(zhí)行;此外,exit()可接受字符串參數(shù)作為輸出內(nèi)容或整數(shù)作為狀態(tài)碼,其別名為die()。

將語(yǔ)義結(jié)構(gòu)應(yīng)用於html的文章,部分和旁邊 將語(yǔ)義結(jié)構(gòu)應(yīng)用於html的文章,部分和旁邊 Jul 05, 2025 am 02:03 AM

在HTML中合理使用語(yǔ)義化標(biāo)籤能提升頁(yè)面結(jié)構(gòu)清晰度、可訪問(wèn)性和SEO效果。 1.用於獨(dú)立內(nèi)容區(qū)塊,如博客文章或評(píng)論,需保持自包含性;2.用於歸類相關(guān)內(nèi)容,通常包含標(biāo)題,適用於頁(yè)面不同模塊;3.用於與主內(nèi)容相關(guān)但非核心的輔助信息,如側(cè)邊欄推薦或作者簡(jiǎn)介。實(shí)際開發(fā)中應(yīng)結(jié)合、等標(biāo)籤,避免過(guò)度嵌套,保持結(jié)構(gòu)簡(jiǎn)潔,並通過(guò)開發(fā)者工具驗(yàn)證結(jié)構(gòu)合理性。

請(qǐng)求的操作需要高程窗戶 請(qǐng)求的操作需要高程窗戶 Jul 04, 2025 am 02:58 AM

遇到“此操作需要提升權(quán)限”提示時(shí),說(shuō)明你需要管理員權(quán)限才能繼續(xù)。解決方法包括:1.右鍵選擇“以管理員身份運(yùn)行”程序或設(shè)置快捷方式始終以管理員身份運(yùn)行;2.檢查當(dāng)前賬戶是否為管理員賬戶,若不是則切換或請(qǐng)求管理員協(xié)助;3.用管理員權(quán)限打開命令提示符或PowerShell執(zhí)行相關(guān)命令;4.在必要時(shí)通過(guò)獲取文件所有權(quán)或修改註冊(cè)表等手段繞過(guò)限制,但此類操作需謹(jǐn)慎並充分了解風(fēng)險(xiǎn)。確認(rèn)權(quán)限身份並嘗試上述方法通常可解決問(wèn)題。

如何在PHP中創(chuàng)建數(shù)組? 如何在PHP中創(chuàng)建數(shù)組? Jul 02, 2025 pm 05:01 PM

在PHP中創(chuàng)建數(shù)組的方法有兩種:使用array()函數(shù)或使用中括號(hào)[]。 1.使用array()函數(shù)是傳統(tǒng)方式,兼容性好,定義索引數(shù)組如$fruits=array("apple","banana","orange"),關(guān)聯(lián)數(shù)組如$user=array("name"=>"John","age"=>25);2.使用[]是從PHP5.4開始支持的更簡(jiǎn)潔的方式,如$color

PHP原始帖子數(shù)據(jù)PHP PHP原始帖子數(shù)據(jù)PHP Jul 02, 2025 pm 04:51 PM

在PHP中處理原始POST數(shù)據(jù)的方法是使用$rawData=file_get_contents('php://input'),適用於接收J(rèn)SON、XML或其他自定義格式數(shù)據(jù)。 1.php://input是一個(gè)只讀流,僅在POST請(qǐng)求中有效;2.常見問(wèn)題包括服務(wù)器配置或中間件已讀取輸入流導(dǎo)致無(wú)法獲取數(shù)據(jù);3.應(yīng)用場(chǎng)景包括接收前端fetch請(qǐng)求、第三方服務(wù)回調(diào)和構(gòu)建RESTfulAPI;4.與$_POST的區(qū)別在於$_POST自動(dòng)解析標(biāo)準(zhǔn)表單數(shù)據(jù),而原始數(shù)據(jù)適合非標(biāo)準(zhǔn)格式並允許手動(dòng)解析;5.普通HTM

如何在PHP中牢固地處理文件上傳? 如何在PHP中牢固地處理文件上傳? Jul 08, 2025 am 02:37 AM

要安全處理PHP文件上傳需驗(yàn)證來(lái)源與類型、控製文件名與路徑、設(shè)置服務(wù)器限制並二次處理媒體文件。 1.驗(yàn)證上傳來(lái)源通過(guò)token防止CSRF並通過(guò)finfo_file檢測(cè)真實(shí)MIME類型使用白名單控制;2.重命名文件為隨機(jī)字符串並根據(jù)檢測(cè)類型決定擴(kuò)展名存儲(chǔ)至非Web目錄;3.PHP配置限制上傳大小及臨時(shí)目錄Nginx/Apache禁止訪問(wèn)上傳目錄;4.GD庫(kù)重新保存圖片清除潛在惡意數(shù)據(jù)。

您如何按值與PHP中的參考傳遞變量? 您如何按值與PHP中的參考傳遞變量? Jul 08, 2025 am 02:42 AM

InPHP,variablesarepassedbyvaluebydefault,meaningfunctionsorassignmentsreceiveacopyofthedata,whilepassingbyreferenceallowsmodificationstoaffecttheoriginalvariable.1.Whenpassingbyvalue,changestothecopydonotimpacttheoriginal,asshownwhenassigning$b=$aorp

See all articles