PHP常見錯誤,我認為主要分為3塊:
## 1、語法錯誤
`Parse error: syntax error, unexpected T_VARIABLE in E:\gstbook\user.php on line 268`
一般是少分號,在上一行或者下一行都有可能
`Parse error: syntax error, unexpected '.' in F:\www\blog\article.php on line 100`
多個“.”,類似的還有多個“;”等等
`Notice: Undefined variable: a in ... `
使用了一個沒有被定義的變量a
`Parse error: syntax error, unexpected T_ELSE in `
if else if else 句式邏輯錯誤
`Parse error: syntax error, unexpected $end in `
一般是大括號不匹配
`Parse error: syntax error, unexpected T_STRING in`
一般是忘了寫句末分號
`Parse error: syntax error, unexpected T_PRIVATE in`
一般是private函數位置寫到了調用自己函數的內部
`Warning: Invalid argument supplied for foreach() in `
foreach 的第一個參數必須是一個數組
`Warning: Wrong parameter count for a in `
函數參數個數不對
~~~
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at F:\www\blog\index.php:10) in F:\www\blog\incl?s\config.inc.php on line 10
Warning: annot modify header information - headers already sent by (output started at F:\www\blog\index.php:10) in F:\www\blog\incl?s\config.inc.php on line 12
~~~
session前面不能有輸出,同意的cookie也是這樣的
`Fatal error: Cannot redeclare `
函數已經定義過,不能重新再定義;類也不能同名
## 2、SQL語句錯誤
`Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in `
說明前面執行SQL 返回失敗,一般可能是SQL語句錯誤 ,如分析不出來,可以Mysql_error () 看具體是哪個地方錯了
`No database selected `
一般是沒有連接數據庫
`Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘root’@'localhost’ (using password: YES) in ….. on line 3Access denied for user ‘root’@'localhost’ (using password: YES)`
數據庫用戶名的密碼錯誤
`Unknown database ‘cms07261′ `
數據庫不存在
`Table ‘cms0726.test’ doesn’t exist `
表不存在
`Unknown column ‘abc’ in ‘field list’ `
字段不存在
`Column count doesn’t match val count at row 1`
sql語句中 字段值的個數比字段名個數不一樣
## 3、模板錯誤
`Fatal error: Smarty error: [in message_list.html line 22]: syntax error: ‘foreach: item’ must be a variable name (literal string) `
foreach 后面的item 后面必須跟一個變量名,不加$,是一個字符串
`Fatal error: Smarty error: [in admin/tpl/class_detail.html line 14]: syntax error: unrecognized tag: cs.st?nt_id (Smarty_Compiler.class.php, line 436) in D:\www\web\xmphp\inc\smarty\Smarty.class.php on line 1088`
smarty語法錯誤:循環數組的時候,少$
`Warning: Smarty error: unable to read resource: “message_list1.html” in `
模板文件找不到,看是否是文件名寫錯或文件存放到別的目錄中去了。
`Fatal error: Smarty error: [in order_detail.html line 171]: syntax error: unclosed tag \{elseif} (opened line 157). (Smarty_Compiler.class.php, line 317) in F:\www\gstbook\xmphp\inc\smarty\Smarty.class.php on line 1088`
html頁面語法錯誤,少結束標簽<%/if%>
以后遇到問題,我會及時更新!
附上PHP錯誤報表:
序號代碼錯誤報告
|1|error_reporting(Integer)|此設置是每個腳本默認錯誤報告設置。它的參數可以是這里列出的任意常量,表示所有錯誤的E_ALL或者類似E_ALL&E_NOTICE的一個邏輯表達式。|
|-|-|-|
|2|display_error(Boolean)|此設置控制錯誤是否作為PHP輸出的一部分顯示出來,默認設置是on。|
|3|display_startup_errors(Boolean)|此設置控制在PHP啟動時是否顯示錯誤,默認設置是off,而且是用來調試C擴展。|
|4|error_prepend_string(String)|這個字符串在瀏覽器中顯示錯誤信息之前直接顯示出來。|
|5|track_errors(Boolean)|當這個設置開啟時,一旦一個錯誤出現,變量$php_errormsg在PHP作用域中被定義。這個變量包含錯誤信息。|
|6|html_errors(Boolean)|此設置控制是否在錯誤信息中采用HTML格式。默認情況下顯示的是HTML錯誤,CLI版本的PHP除外。|
|7|xmlrpc_erroes(Boolean)|此設置控制錯誤信息是否啟用作為XML-RPC故障顯示。|
|8|xmlrpc_error_number(Integer)|這個XML-RPC故障代碼是啟用xmlrpc_errors時使用的。|
|9|log_errors(Boolean)|此設置控制錯誤是否記錄。日志的地址是通過error_log設置決定的。默認情況下,錯誤被記錄到Web服務器的錯誤日志中。|
|10|log_error_max_len(Integer)|此設置是當啟用log_errors時控制記錄的錯誤信息的最大長度。超過這個長度的信息也會被記錄下來,但是會被截斷。|
|11|error_log(String)|此設置決定錯誤記錄的地方。在默認情況下,它們被傳送到Web服務器的錯誤記錄機制中,但必須指定一個文件名,或者指定Syslog讓系統日志來記錄。|
|12|ignore_report_errors(Boolean)|當啟用它時,這個設置讓PHP不在同一行中重復顯示一樣的錯誤信息。|
|13|ignore_repeated_source(Boolean)|當啟用時,PHP將不顯示與前一個顯示的錯誤來自同一個文件同一行錯誤。如果它沒有被啟用,它就不起作用。
2 、PHP錯誤是通過錯誤級別進行劃分的,范圍從通告到嚴重錯誤,這個錯誤級別報告錯誤的嚴重性。大部分錯誤可以用常用的錯誤處理器來獲取,但其中一些則不可恢復。
PHP錯誤級別表
|序號| 錯誤代碼 |錯誤級別|
|-|-|-|
|1|E_ERROR|嚴重錯誤,不可恢復。例如內存不足、位置異常或類重復聲明錯誤|
|2|E_WARNING|一個經常發生的錯誤類型。表示一些操作錯誤。例如丟失函數參數,連接數據庫失敗,除數為0等錯誤。|
|3|E_PARSE|編譯時發生的解析錯誤,會導致在PHP執行前退出。意味著如果一個文件因為解析錯誤運行失敗,程序將停止運行。|
|4|E_STRICT|錯誤級別是唯一不包含在E_ALL常量中。這是為了讓PHP4到PHP5的遷移更加容易;你可以在PHP5軟件系統中運行PHP4代碼。|
|5|E_NOTICE|運行代碼在操作一些未知的動作,例如讀取為定義的變量。|
|6|E_CORE_ERROR|內部錯誤,擴展啟動失敗導致的,會導致PHP運行退出。|
|7|E_COMPILE_ERROR|編譯錯誤,與E_PARSE不同,這個錯誤會導致PHP運行退出。|
|8|E_WARNING_ERROR|編譯時的警告,可能是使用者發生語法錯誤。|
|9|E_USER_ERROR|用戶定義錯誤導致PHP退出執行。用戶定義錯誤(E_USER_*)不是來自PHP本身,而是包含在腳本中。|
|10|E_USER_WARNING|用戶定義錯誤不會導致PHP退出執行。腳本可以使用它來通知一個執行失敗,執行失敗PHP也會用E_WARNING來通知。|
|11|E_USER_NOTICE|用戶定義的通告可以用來在腳本中可能存在錯誤。|
- 序
- 前言
- 內容簡介
- 目錄
- 基礎知識
- 起步
- 控制器
- 模型
- 模板
- 命名空間
- 進階知識
- 路由
- 配置
- 緩存
- 權限
- 擴展
- 國際化
- 安全
- 單元測試
- 拿來主義
- 調試方法
- 調試的步驟
- 調試工具
- 顯示trace信息
- 開啟調試和關閉調試的區別
- netbeans+xdebug
- Socketlog
- PHP常見錯誤
- 小黃鴨調試法,每個程序員都要知道的
- 應用場景
- 第三方登錄
- 圖片處理
- 博客
- SAE
- REST實踐
- Cli
- ajax分頁
- barcode條形碼
- excel
- 發郵件
- 漢字轉全拼和首字母,支持帶聲調
- 中文分詞
- 瀏覽器useragent解析
- freelog項目實戰
- 需求分析
- 數據庫設計
- 編碼實踐
- 前端實現
- rest接口
- 文章發布
- 文件上傳
- 視頻播放
- 音樂播放
- 圖片幻燈片展示
- 注冊和登錄
- 個人資料更新
- 第三方登錄的使用
- 后臺
- 微信的開發
- 首頁及個人主頁
- 列表
- 歸檔
- 搜索
- 分頁
- 總結經驗
- 自我提升
- 進行小項目的鍛煉
- 對現有輪子的重構和移植
- 寫技術博客
- 制作視頻教程
- 學習PHP的知識和新特性
- 和同行直接溝通、交流
- 學好英語,走向國際
- 如何參與
- 瀏覽官網和極思維還有看云
- 回答ThinkPHP新手的問題
- 嘗試發現ThinkPHP的bug,告訴官方人員或者push request
- 開發能提高效率的ThinkPHP工具
- 嘗試翻譯官方文檔
- 幫新手入門
- 創造基于ThinkPHP的產品,進行連帶推廣
- 展望未來
- OneThink
- ThinkPHP4
- 附錄