PHP程序編譯中常見錯誤信息分析及解釋-_第1頁
PHP程序編譯中常見錯誤信息分析及解釋-_第2頁
PHP程序編譯中常見錯誤信息分析及解釋-_第3頁
PHP程序編譯中常見錯誤信息分析及解釋-_第4頁
PHP程序編譯中常見錯誤信息分析及解釋-_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、PHP程序編譯中常見錯誤信息分析及解釋.txt如果我窮得還剩下一碗飯我也會讓你先吃飽全天下最好的東西都應該歸我所有,包括你!先說喜歡我能死啊?別鬧,聽話。有本事你就照顧好自己,不然就老老實實地讓我來照顧你!我們編寫程序時,無論怎樣小心謹慎,犯錯總是在所難免的。這些錯誤通常會迷惑PHP編譯器。如果開發人員無法了解編譯器報錯信息的含義,那么這些錯誤信息不僅毫無用處,還會常常讓人感到沮喪。編譯PHP腳本時,PHP編譯器會盡其所能報告它遇到的第一個問題。這樣就產生一個問題:只有當錯誤出現時,PHP才能將它識別出來(本文后面對此問題進行了詳細描述。正是由于這個緣故,編譯器指出出錯的那行,從表面上看來可能

2、語法正確無誤,或者可能是根本就不存在的一行!更好地理解錯誤信息可以大大節省確定并改正錯誤內容所花費的時間。因此,在本文中,我將努力闡明多種不同類型的PHP報錯信息,以及在開發過程中如何正確理解各種報錯信息的含義。本文中所講述的內容與您所應用的PHP的版本無關,因為本文所描述的各種錯誤并不限定于某一特殊版本的特定錯誤。另外我們假定您是一位初級或者中級程序員,并已經從事編程工作有半年或一年的時間。編譯器的工作方式要搞清楚編譯器為什么會報告某一行上存在錯誤,首先必須明確編譯器解析PHP代碼的機制。我并不打算在本文中對此進行詳細論述,但是,我們將會討論一些更易于引發錯誤的簡單概念。變量聲明如果在一條語

3、句中聲明一個變量,具體方式如下所示:$variable = 'value'編譯器首先求出語句右半部分的值(即等號右邊的所有內容。在一些編程書籍中,將此表示為語句的 RHS (右半部分。恰恰正是語句的這一部分常常會引發錯誤。如果使用的語法不正確,就會出現解析錯誤。解析錯誤Parse error:解析錯誤,unexpected T_WHILE in c:program filesapache groupapachehtdocsscript.php on line 19每次確定了前一錯誤時,解析錯誤一個接一個地不斷出現。因為PHP在第一個解析錯誤之后就停止執行腳本,調試并糾正這一系列

4、的錯誤往往會讓人覺得特別厭煩。而且,解析錯誤具有很少的信息,幾乎不報告錯誤所在的行號。具體原因就是當出現錯誤時,編譯器判定好幾行的語法看起來應該是有效的,直至遇到無效的語法,最可能的情形就是表達式中使用了預定義的字詞,例如;while = 10; / Bad ? while 就是一個預定義字詞,不能分配給一個值預定義的字詞包括 while、function等,如果PHP使用 uses to evaluate your code. 您不能使用這些預定義字詞來命名變量,而且如果您非要這樣做的話,PHP就會報出更多的錯誤,這是您無法忍受。關于這個問題,下面的示例可能會對您有所幫助。請咨詢閱讀一下下面

5、所示的PHP 代碼: $b = somevalueif($b = somevalueprint Hello world!;?>錯誤位于$b =一行(在語句的末端缺少分號,所以錯誤應該是解析錯誤:第3行缺少分號對吧?而不應該依據解析器判定的:Parse error: parse error, unexpected T_IF in c:program filesapachegroupapachehtdocsereg2.php on line 4在第4行,if( 語句的語法是正確的。那么,編譯器是被什么給搞糊涂了呢?線索就是unexpected T_IF 部分。出現 unexpected T_

6、?錯誤時,它所表示的含義為:編譯器發現在預定義字不應該出現的位置出現。T_IF 代表 if(, T_WHILE 代表 while(, T_FOR 代表for(等。值得慶幸的是,一些錯誤的原因也很簡單:語句沒有使用分號(;結束,比如上面的示例。字符串中缺少引號。其他一些常見的錯誤我見過的最常見的錯誤就是,當沒有使用大括號( 結束一個函數或者一個循環時出現的錯誤,這很可能是最常見,最讓人煩的錯誤。具體代碼如下:function UselessFunction( for($i < 0; $i < 10; $i+將產生下列錯誤:Parse error: parse error, unexp

7、ected $ in c:program filesapachegroupapachehtdocsereg2.php on line 9由于函數 UselessFunction 沒有使用大括號( 來結束,PHP編譯器不斷查找表示結束的大括號直至到達文件末尾為止。因為編譯器未找到一個匹配的大括號,就會報告文件末尾處有錯誤。如果正確地反映了代碼的層次結構,錯誤信息就會變得非常明顯。如果沒有標明代碼的層次結構,那么最后要想查清楚到底忘記了什么也會變得幾乎是不可能的。所以,請記住,一定要標明代碼的層次結構。Tab鍵可以很容易地實現這一點。對后續的開發人員來說,把握代碼框架并對其進行修改也會更容易一些。

8、MySQL 錯誤另一極其令人討厭的錯誤信息就是最常見的MySQL錯誤,這常常使 PHP新手感到頗為頭疼: Warning: Supplied argument is not a valid MySQL result resource in.上面所報告有錯的一行可能是:while($row = mysql_fetch_array($result 參數 $result并不是一個有效的資源。在英語中它表示因為查詢失敗,將無法處理mysql_fetch_array。任一查詢的語法無效(您應該將查詢復制-粘貼到MySQL 控制臺參考來進行測試,或者與數據庫的連接失敗(這種情況下您應該再次檢查用戶名和口令等。防止錯誤發生第一步,智能代碼器可采取以下幾步來消除下列錯誤出現:·在每一條語句的末尾處,不必考慮添加分號這應該成為一種習慣。·總是要盡可能標明代碼的層次結構,這可以使您能夠查看是否忘記在if 調用或函數末端等位置添加大括號。·請使用可突出顯示語法的編輯器(如 HTML-Kit。有了這類編輯器的輔助,您就能確定是否忘記了添加引號,是否缺少分號等。結論本文我們對PHP編譯器可報出的一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論