版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、如果您想從此貼直接獲得一些有用的插件、模塊、或代碼,請繞道~~“授人以魚”還是“授人以漁”,此貼是后者,希望對你有所幫助……提示:如果你是PHP編程有比較深入經(jīng)驗(yàn)了,請只讀紅字內(nèi)容即可,其它跳過。如果你是PHP初學(xué)者,請仔細(xì)閱讀所有文字,別嫌繁瑣,對你提高有好處!1、執(zhí)行、執(zhí)行header()前輸出的空格、空行、任何字符,都會(huì)導(dǎo)致前輸出的空格、空行、任何字符,都會(huì)導(dǎo)致header()跳轉(zhuǎn)跳轉(zhuǎn)失效!失效!前幾天,幫一個(gè)客戶做了一些修改,把
2、代碼發(fā)給對方之后,對方后來反映說“后臺(tái)欄目查看文章列表不行了”,我去查看果真如此,點(diǎn)擊了欄目后面的“內(nèi)容”進(jìn)去,一片空白!這一點(diǎn)我當(dāng)時(shí)百思不得其解,因?yàn)槲易鲂薷牡拇a,和這個(gè)功能完全沒有關(guān)系!于是不得已,只好一步步做跟蹤調(diào)試:首先首先要排查的是語法錯(cuò)誤(如果當(dāng)php.ini里設(shè)置是不顯示任何錯(cuò)誤的話,語法錯(cuò)也會(huì)導(dǎo)致一片空白),這個(gè)文件是dedecatalog_do.php(怎么知道是這個(gè)文件呢,很簡單,在那個(gè)一片空白的頁面上,點(diǎn)右鍵,看
3、屬性,就有地址URL和傳遞的參數(shù)),我把一行die(“aa“)放在了代碼第一行,這個(gè)做法就可以測試有無語法,因?yàn)檎Z法錯(cuò)不單可以發(fā)生在catalog_do.php文件本身,還可以發(fā)生在catalog_do.php文件所引用的文件里(包括這些文件里再引用的任何一級(jí)文件里),所以如果這個(gè)第一行die(“aa“)也不能執(zhí)行,就必然是語法錯(cuò)。因?yàn)槟茌敵鯽a也就是說語法沒有錯(cuò),就必定是某種程序上的邏輯錯(cuò)。然后然后進(jìn)一步尋找邏輯錯(cuò)誤發(fā)生的文件,這就需
4、要跟蹤代碼的所執(zhí)行到的地方,由于沒有任何提示,也還是利用die(“aa“),把這一行往下挪到catalog_do.php文件的include、require等語句之后,如果不能執(zhí)行,說明在include、require所引用的文件里,代碼執(zhí)行就停止了,反之說明那些文件執(zhí)行是正常的。這一步,依然能顯示aa,說明錯(cuò)誤是發(fā)生在catalog_do.php文件里(如果是發(fā)生在其他所引用的文件里,就用此法打開那些文件去如是調(diào)試)然后然后再此文件里
5、一步步尋找發(fā)生錯(cuò)誤的具體代碼段,首先要看鏈接此文件時(shí)候的參數(shù)(在那個(gè)一片空白的頁面上,點(diǎn)右鍵,看屬性,就有地址URL和傳遞的參數(shù)),而點(diǎn)擊“內(nèi)容”時(shí)鏈接此文件的URL為catalog_do.phpcid=3放到緊接著它的第一行,看看還能否輸出aa,如果可以輸出,說明程序正確進(jìn)入了目標(biāo)程序段,否則就說明dopost==“l(fā)istArchives“這個(gè)判斷沒有達(dá)到預(yù)期的效果(如果是這個(gè)情況,你就要好好對照剛才的URL和這個(gè)dopost==“
6、listArchives“,有沒有寫錯(cuò)參數(shù)名、大小寫有沒有弄錯(cuò)了,還有就是dopost值有沒有在前面就被改變了,最常見的錯(cuò)就是類似寫成了dopost==“l(fā)istarchives“,或者在前頭某個(gè)判斷里寫成了dopost=“...“),好,依然能輸出aa,說明程序也進(jìn)來這里了。然后然后繼續(xù)尋找發(fā)生錯(cuò)誤的代碼行,繼續(xù)挪動(dòng)die(“aa“)的玉步,每次挪動(dòng)完,刷新那個(gè)空白頁面,看看能否輸出aa(這里有技巧,想快,就不要逐行挪動(dòng),而是利用折半
7、查找,或者在關(guān)鍵代碼前后插入,這個(gè)就需要比較強(qiáng)的代碼閱讀能力和一定的編程經(jīng)驗(yàn)了,不展開了),最后,我發(fā)現(xiàn)在header(“l(fā)ocation:$gurlchannelid=$channelid這一行之前能輸出aa,這一行之后也能輸出aa,而我是很清楚,這一行本該跳轉(zhuǎn)到某個(gè)指定的頁面上的,后面不應(yīng)該輸出aa,同時(shí)我也知道造成這個(gè)問題,通常是因?yàn)槌绦驁?zhí)行在之前就輸出過字符(如果你不清楚,就查google或手冊)!接下來接下來的工作,就是找哪個(gè)
8、文件有這個(gè)輸出了,天啊,這太難找了!于是我換了另外一個(gè)做法“修改排查法”,我在本地把我那些修改的代碼,也換上去,發(fā)現(xiàn)沒有出現(xiàn)這樣的問題,也就是說,我寫的文件沒有問題。然后我把客戶所有文件,都列出來,按修改時(shí)間排序,并詢問了客戶最后可以正常使用這個(gè)功能的時(shí)間,發(fā)現(xiàn)了一堆在此時(shí)間之后修改的php文件,除去我修改的那些文件,就剩下兩個(gè)文件了,其中一個(gè)是includeextend.func.php文件,我很清楚這個(gè)文件是一個(gè)dede提供給客戶做
9、函數(shù)擴(kuò)展的文件,它被common.func.php所引用,而common.func.php又是被全站所有文件所引用的文件!于是我打開這個(gè)文件,赫然在最后之后,有兩個(gè)空格一個(gè)空行?。。。。?!把這些空格空行刪除,至此至此功能就全部正常了(包括我在模塊表里自定義了一個(gè)模塊鏈接,它在這個(gè)錯(cuò)誤的情況下,不能顯示在模塊列表里,現(xiàn)在也正常了)!以上文字,對于初級(jí)PHPer,可以學(xué)習(xí)領(lǐng)會(huì)一點(diǎn)點(diǎn)PHP調(diào)試技術(shù);對于PHP已經(jīng)比較熟的,而對DEDE還有有點(diǎn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 經(jīng)驗(yàn)之談
- 開車經(jīng)驗(yàn)之談
- 經(jīng)驗(yàn)之談吳曙光
- autocad二次開發(fā)實(shí)驗(yàn)一
- 云和移動(dòng)開發(fā)風(fēng)氣云涌,autodesk的一些云應(yīng)用提供rest api做基于云的二次開發(fā)
- 二次開發(fā)20120621
- cad二次開發(fā)
- 房建預(yù)算經(jīng)驗(yàn)之談
- 地基處理幾點(diǎn)經(jīng)驗(yàn)之談
- 創(chuàng)業(yè)經(jīng)驗(yàn)之談(總結(jié))
- 開發(fā)區(qū)財(cái)務(wù)管理經(jīng)驗(yàn)之談
- 一個(gè)癌癥患者的康復(fù)經(jīng)驗(yàn)之談
- dedecms二次開發(fā)手冊
- 二次開發(fā)服務(wù)承諾
- 二次開發(fā)論(1)
- 網(wǎng)站二次開發(fā)合同
- cad二次開發(fā)ppt
- enviidl_二次開發(fā)
- 二次開發(fā)論.pdf
- 產(chǎn)品-dede二次開發(fā)
評(píng)論
0/150
提交評(píng)論