1、php常見錯誤等級:notice,warning,strict,parse error,fatal error
2、錯誤原理:
常見的notice:未定義變數(常量),表單元素未定義(下標)
<?php
//未定義變數
// 解決方案:使用前定義
echo
$var;
//未定義常量
echo pi;
//陣列元素下標未定義
// 解決方案:在使用前進行判斷,保證**安全,增加**容錯性 if (isset($_post['name'])) echo
$_post['name'];
echo
$_post['name'];
常見的warning:包含檔案不存在,預設時區,函式引數沒有傳入值
<?php
// 包含檔案,不影響後面輸出hello world
include_once
'fatalerror.php';
echo
"hello world";
// 使用預設時區
// 解決方案:修改預設時區為'prc'
echo data('y-m-d',time());
// 實參沒有傳值
function
display
($value)
// 呼叫函式
display();
常見的strict:構造方法,類訪問非靜態方法
<?php
// 解決方案:1,將老款放下面;2,不做相容
class
girlfriend
// 構造方法
function
__construct
()
// 例項化,構造方法相容錯誤
$g = new girlfriend();
// 類是可以訪問類成員的:一般訪問靜態成員(static關鍵字修飾)和類常量(const)
girlfriend::display();
// 解決方案:分清楚角色,靜態成員和類常量都歸類訪問,普通的方法和屬性都歸物件訪問
$g::display();
}
常見的parse:結構不完整,缺少語句結束符,關鍵字學錯,定界符
<?php
// 結構不完整
// 解決方案:注意**的結構規範
if (true))
function
functionname
()} // 缺少語句結束符
// 缺少分號
echo
"helloworld"
// 定界符,結束內容必須頂格
// 第乙個符號後面不能有任何內容,包括空格和注釋
$str=<<
常見的fotal:檔案包含,使用未定義的結構(函式和類),訪問私有成員,記憶體超出,時間過長(超過30s)
<?php
// 檔案包含,require,後面的hello不能輸出
// 解決方案,載入前進行檔案判斷if(file_exit('fatalerror.php'))
require
'fatalerror.php';
echo
"hello";
// 使用未定義結構
// 解決方案:1確定定義的函式2自動載入
display(); //直接呼叫未定義的函式
$g = new girlfriend();//未定義類
// 私有成員訪問
// 解決方案:php過載
class
classname
$g = new classname();
echo
$g->name;//公有可以訪問
echo
$g->age;//fatal error
// 記憶體超出:伺服器記憶體不夠
// 解決方案:優先查遞迴,有沒有遞迴出口
// 遞迴:必須有遞迴點和遞迴出口
function
dg()
dg();
// 執行時間過長,時間超過30s
// 解決方案:加長php解決 set_time_limie(0);
$arr = array();
for ($i=0; $i
< 100000; $i++)
// 定義冒泡函式
function
bubble_sort
($arr)}}
return
$arr;
}bubble_sort($arr);
3、錯誤解決方案
a)主動解決問題
b)抑制問題
c)關閉問題
常見SSL錯誤和解決辦法
問題 此 出具的安全證書不是由受信任的證書頒發機構頒發的。原因和解決辦法 伺服器正在使用的ssl證書,沒有通過正式的ca頒發。推薦購買globalsign ssl,網購信 ssl 維瑞信 ssl通常是因為沒有正確安裝了證書,請再檢查一下是否刪除了原來的測試證書,如果 使用的證書是正確的,請重新啟動 ...
PHP中常見的錯誤提示及解決辦法
在php程式的編寫過程中難免會出現一些小的錯誤,例如拼寫錯誤以及小的符號錯誤。在php執行過程中若遇到錯誤會給出相應的提示,如何快速看懂這些提示背後的問題,對php除錯能力的提高有很大幫助。現舉例如下 我在php中編寫驗證碼時,有個簡單的判斷,if post check else 但是我開始在執行程...
SSL證書常見錯誤和解決辦法
伺服器正在使用的ssl證書不是通過正式的全球信任的ca頒發。推薦購買globalsign ssl,geotrust ssl symante ssl證書,ssl通常是因為沒有正確安裝證書,請再檢查一下是否刪除了原來的測試證書,如果 使用的證書是正確的,請重新啟動webserver。預設情況下,出於安全...