版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、PHP程序員的優(yōu)化調(diào)試技術(shù)和技巧程序員的優(yōu)化調(diào)試技術(shù)和技巧本文介紹調(diào)試PHP應(yīng)用程序的各種方法,包括在ApachePHP中打開錯誤報告,以及通過在一個簡單的PHP腳本中放置策略性的print語句,找到更困難的bug的源頭。還會介紹用于Eclipse的PHPEclipse插件,這是一個靈活的開發(fā)環(huán)境,具有實時語法解析能力,還會介紹PHPEclipse的DBG調(diào)試器擴(kuò)展。簡介有許多PHP調(diào)試技術(shù)可以在編碼的時候節(jié)約大量時間。一個有效卻很基本
2、的調(diào)試技術(shù)就是打開錯誤報告。另一個略微高級一點的技術(shù)包括使用print語句,通過顯示在屏幕上實際出現(xiàn)的內(nèi)容,有助于精確地找出更難發(fā)現(xiàn)的bug。PHPEclipse是一個Eclipse插件,能夠強(qiáng)調(diào)常見的語法錯誤,可以與調(diào)試器結(jié)合起來用于設(shè)置斷點。設(shè)置要學(xué)習(xí)本文描述的概念,需要PHP、Web服務(wù)器和Eclipse。調(diào)試器擴(kuò)展支持的PHP版本是V5.0.3。我們需要一個Web服務(wù)器來解析用PHP創(chuàng)建的頁面并把它們顯示到瀏覽器。本文中使用的是
3、Apache2。但是,任何Web服務(wù)器都可以滿足要求。要利用本文中介紹的一些調(diào)試技術(shù),需要安裝EclipseV3.1.1和插件PHPEclipseV1.1.8。由于Eclipse要求Java技術(shù),所以還要下載它。還需要PHP的調(diào)試器擴(kuò)展模塊。安裝它略有些麻煩。請仔細(xì)跟隨安裝調(diào)試器擴(kuò)展的操作說明?,F(xiàn)在,先在php.ini文件中注釋掉那些要求裝入和配置PHP擴(kuò)展的行。在需要使用調(diào)試器的時候,再取消注釋。請參閱參考資料獲得下載信息。現(xiàn)在介紹出
4、錯消息。出錯消息出錯消息是作為開發(fā)人員的第一道防線。誰都不想在一臺沒有配置成顯示出錯消息的服務(wù)器上用PHP開發(fā)代碼。但是,請記住,當(dāng)代碼調(diào)試完成,準(zhǔn)備運(yùn)行的時候,應(yīng)當(dāng)確保關(guān)閉了錯誤報告,因為不希望站點的訪問者看到出錯消息,因為這會給他們提供足夠的信息來利用站點的弱點并黑掉站點。也可以用出錯消息為自己服務(wù),因為它們會顯示拋出或生成錯誤的正確代碼行。這樣,調(diào)試就變成在瀏覽器上查看生成的錯誤所顯示的行號,并在代碼中檢查這一行。稍后,將會看到P
5、HPEclipse插件通過即時地給語法錯誤加下劃線并在保存文件時用紅色“x”標(biāo)注語法錯誤,可在開發(fā)和調(diào)試過程中提供極大的幫助。先來看如何在php.ini文件中開啟錯誤報告并設(shè)置錯誤報告的級別。然后將學(xué)習(xí)如何在Apache的配置文件中覆蓋這些設(shè)置。PHP的錯誤報告php.ini文件中有許多配置設(shè)置。您應(yīng)當(dāng)已經(jīng)設(shè)置好自己的php.ini文件并把它放在合適的目錄中,就像在Linux上安裝PHP和Apache2的文檔說明中所示的那樣(請參閱參考
6、資料)。在調(diào)試PHP應(yīng)用程序時,應(yīng)當(dāng)知道兩個配置變量。下面是這兩個變量及其默認(rèn)值:display_errs=Offerr_repting=E_ALL通過在php.ini文件中搜索它們,可以發(fā)現(xiàn)這兩個變量當(dāng)前的默認(rèn)值。display_errs變量的目的很明顯——它告訴PHP是否顯示錯誤。默認(rèn)值是Off。但是,要讓開發(fā)過程介紹print語句因為應(yīng)用程序中的功能性bug不會產(chǎn)生錯誤,所以在所有調(diào)試策略中,關(guān)于如何正確地放置和使用print或d
7、ie語句來調(diào)試PHP應(yīng)用程序的知識是一種很好的資產(chǎn)??梢杂胮rint語句在代碼中縮小對問題語句的定位,這些語句在語法上沒有錯誤,也不是bug,但是從代碼的功能上看是bug。這些是最難發(fā)現(xiàn)和調(diào)試的bug,因為它們不會拋出錯誤。惟一知道的就是在瀏覽器上顯示的內(nèi)容不是想要的內(nèi)容,或者想要保存在數(shù)據(jù)庫中的內(nèi)容根本沒有保存。假設(shè)正在處理通過GET請求發(fā)送過來的表單數(shù)據(jù),想向瀏覽器顯示信息,但是出于某種原因,數(shù)據(jù)沒有正確地提交,或者不能正確地從GE
8、T請求中讀出。要調(diào)試這類問題,重要的是用print()或die()語句知道變量的值是什么。die()語句會中止程序執(zhí)行,并在Web瀏覽器上顯示文本。如果不想注釋掉代碼,而且只想顯示到出錯之前的信息和出錯信息,不想顯示后面的信息,那么die()語句特別有用。讓我們在PHP中用print語句來測試這個概念使用print語句進(jìn)行調(diào)試在我作程序員的那些時候,當(dāng)我在Linux上開發(fā)應(yīng)用程序時,沒有方便的GUI可以告訴我bug在哪,我迅速地發(fā)現(xiàn)我在
9、程序中放的print語句越多,我在應(yīng)用程序中把bug的范圍縮小到一行的機(jī)會越大。請創(chuàng)建另一個PHP文件test2.php,并像清單2所示的那樣定義它。清單2.顯示通過GET提交的所有變量“)feach($_GETas$key=$i)print(“$key=$j“)if($_GET[Submit]==“SendGETRequest“)$j=“done!“Name:Email:您可能會非常容易地發(fā)現(xiàn)清單2中的bug!您很棒!但請注意這是一個
10、非常簡單的腳本,只是作為使用print語句進(jìn)行調(diào)試而展示的一個例子而已。這個腳本只是提取GET請求中的所有變量,如果有,就把它們顯示在瀏覽器上。還提供了一個表單,用GET請求向服務(wù)器發(fā)送變量以進(jìn)行測試。請看輸出,如圖2所示。圖2.test2.php的輸出現(xiàn)在單擊SendGETRequest按鈕,請注意只有$_GET請求的鍵顯示在瀏覽器上,而正確的值都沒顯示。可以在循環(huán)中放一個print語句,檢驗在feach循環(huán)中每個元素中是否確實存在數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論