常見PHP錯誤

Common PHP Errors

常見PHP錯誤





1.設置出錯報告



首先你得打開你的 PHP出錯報告。從安全角度來說,你可能會想到關閉它。但是如果程序出了問題,而你又需要debug的時候,你可以通過以下的PHP代碼臨時來打開出錯信息。

<?php error_reporting(E_ALL) ?>

Or you can add these lines to the root .htaccess:

或者,你可以將以下幾行加入到.htaccess文件裏



php_flag display_errors on

php_value error_reporting 6143



2.語法構造錯誤



This is a syntax error. Perhaps you forgot a semi-colon at the end of a line, or you forgot a double quote (”) or an end bracket (}) after you started one. For quote and semicolon issues, the problem is usually the line above the one reported in the error. For brackets, it may be at the end of the script.



這是一個語法構造錯誤。(這段翻譯我想不出怎麼好,自己根據理解翻譯)出現這段信息的時候,往往都在出錯代碼的上一行,請檢查一下代碼的結束,是否雙引號或者大括號不匹配,有時候也會有一些字符串的問題在裏面。





3.



Parse error: syntax error, unexpected $end in

You’re most likely missing a } somewhere. Make sure that each { you have is also closed with a }.



這東西是忘記了“}”,請檢查“{}”是否一一對應了。



4.



Parse error: syntax error, unexpected T_STRING, expecting ‘,’ or ‘;’ in..

There may be double quotes within double quotes. They either need to be escaped or brought to single quotes. It’s also possible that a new PHP statement was started before the previous was finished.



出現這種問題往往是在雙引號中又有了雙引號,可能需要在雙引號前加上轉義符或者使用單引號。通常問題在顯示的行數之上一行。



5.



頭出輸出錯誤



Warning: Cannot add header information - headers already sent by (output started at /home/vnessa5/www/errors.php:9) in….

Warning: Cannot send session cache limiter - headers already sent in somefile.php on line 222



一般情況下,HTML的解析都會在PHP前面,而代碼嘗試在發送header相關信息時,你已經有了HTML輸出。所以你在發現有這種情況出現的時候,請檢查你的代碼以保證沒有HTML代碼或者甚至是一個空格。一般有兩個解決方案。1)在文件頭部設定HEADER標籤。2)在你要輸出的頁面前插入HEADER標籤的內容。



<?php ob_start();

Then this at the very end of the page (not usually required)

ob_end_flush(); ?>





6.



mySql 資源錯誤



Warning: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in…



通常,在進行msyql_query後,你需要對取得的數據進行遍歷,如果出現上面錯誤時,你得檢查一下你的$result是否是一個resource,這種情況在SQL查詢語句錯誤(但錯誤沒有被拋出)的情況下,所以,發現此問題時,可以



考慮打印出SQL,到PHPMYDMIN裏執行一下看看是怎麼回事。



7.



Supplied argument is not a valid stream resource…





這個問題的情況通常是你代碼中指定的表或者資源不存在於該數據庫





8.



Sessions are not being created or maintained



Sessions 不能被創建或者被修改維護



這可能會出現以下幾種情況

(1) The program isn’t remembering your login 程序沒有記錄下你的登錄狀態

(2) Your shopping cart won’t hold items 你的購物車沒有保持你的商品狀態

(3) Your php script is redirecting like crazy 你的PHP代碼跳轉的太瘋狂

(4) “Call undefined function session_start” error 你的服務器沒有打開Session功能

(5) PHP isn’t processing pages called by something like index.php?page=home&id=7 你的PHP代碼不能打開某個頁面,比如index.php?page=home&id=7





9.





Your site is most likely dependent on register_globals. You can enable them by putting this line in your .htaccess (or just enabling in your php.ini if you have access):

你的網站可能會依賴register_globals(全局變量)打開。你可以將下面這行加到你的.htaccess文件裏(當然,如果你有權限更改PHP.ini,還是改php.ini更方便)

php_flag register_globals On





10.



文件流錯誤

Warning: failed to open stream…



這兩個問題的出現,通常是文件沒有找到或者文件不能被require和include。(上面的英文我覺得不太準,個人認爲應該是:先檢查一下文件是否確實存在,檢查文件的路徑,當然,還得看一下php.ini的include_path,如果這些都檢查過了。那麼嘗試用絕對路徑加載文件)



11.



Warning: fopen(…): failed to open stream: Permission denied in…



文件沒有權限被讀取,如果你想要你的文件被讀取,設置文件權限爲775,如果該文件需要被執行,那麼就設置成777。否則設置用戶權限/組爲:nobody







12.



Warning: <…> is not a valid stream resource…

Warning: fread(): supplied argument is not a valid stream resource in…



這也是一個常見錯誤,當你使用fopen(), fread(), feof()等函數時,就可能會出現,錯誤原因一般是fopen()或者其他函數打開文件失敗,但錯誤信息被屏蔽,如$fp=@fopen('file.txt');,在這種情況下,再使用fread()讀取時,就會出現上面的出錯信息。



13.



Warning: Failed opening….

Warning: Failed opening ‘…’ for inclusion (include_path=’.:/usr/local/lib/php’) in Unknown on line 0



請確認文件是否有讀寫權限並且路徑是正確的。如果不是,你需要把路徑加載到你的PHP代碼或者.htaccess文件裏

include(”/path/to/files”);





14.空白頁面



You go to a .php page, but it’s blank.



當你轉向到a.php的頁面時,但是打開的卻是空白頁面,出現這種問題的原因有很多,這裏只介紹一些讓你嘗試着解決一下:

1、



錯誤報告是否關閉了?如果是,請打開錯誤報告,並且在你的這個文件里加上一些輸出試試

2、是否PHP代碼本身就是一個輸出頁面,試着尋找一下print之類的函數?

3、檢查數據庫連接,例如,用戶名密碼等

4、試着用完整的PHP標籤:<?php?>,而儘量少用短標籤<??>



有時,一些軟件的測試版本中往往都會存在着一個錯誤或者BUG等,你可以試着將出錯頁用該程序的其他版本來替換掉。象(phpBB或者Ballery





15.



Max Execution Time Error



最大執行時間錯誤





打開頁面時,顯示 "Max_execution_time" 執行時間錯誤。

這應該是你的PHP代碼在運行的時候,超過了服務器所允許的時候,但是,這是可以通過修改.htaccess或者php.ini來進行修改(0代表了不限制)



php_value max_execution_time 0









16.打開基目錄錯誤



Warning: Unknown(): open_basedir restriction in effect.



出現Open_basedir問題的時候,往往需要先檢查,PHP_INI裏面有沒有設定open_basedir,如果PHP.ini裏沒有設定,還需要查看apache的http.conf的虛擬主機設定裏,也否也進行了設置。如果設定了,還需要檢查這些目錄是否可讀寫,否則會出現受保護的錯誤。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章