一、錯誤型別:PHP致命錯誤
Error type: PHP Fatal error
Fatal error: Call to undefined function (a) in (b) on line (c)
二、錯誤描述:
該錯誤報告表示你正企圖呼叫未經定義的函式(function),其中
a----表示未定義的函式名;
b----出現該段指令碼的路徑;
c----企圖呼叫未定義函式的行號。
d----第二次定義該函式時的行號。
三、原因及解決方法:
原因1:你的確沒有宣告過該函式。例如,直接呼叫下面的函式
myFunction();// 這裡根本就沒有這個函式
結果如下
Fatal error:Call to undefinedfunction myFunction()in(path) on line 1
解決:
仔細檢測你的程式中是否宣告過該函式。
原因2:你在函式宣告時用的名稱和你在呼叫時用的名稱不相同,例如
function myFunction(){// do something}myFuntion();// 這裡少寫了一個字母C
解決:這是很多初學者最容易犯的一個錯誤。有時候因為少寫,或者多寫,寫錯一個字母而導致很長時間都檢查不出來。
原因3:你在老版本的PHP下呼叫新版本的PHP內建函式而產生的錯誤。因為你的老版本中這個PHP內建函式根本就不存在。例如,你在PHP老版本中呼叫mime_content_type()
Fatal error:Call to undefinedfunction mime_content_type()
解決:翻開PHP手冊仔細核對你所使用的內建函式到底適用於PHP的哪些版本。在PHP手冊當中對每一個內建函式都註明了詳細的版本限制。例如(PHP 4 >= 4.3.0, PHP 5).所以,解決辦法就是升級你的PHP版本,或者改換同類型的其他內建函式。
原因4:你對該函式的呼叫程式碼,寫在了與函式宣告不同的檔案中。例如,你在a.php檔案中寫了這樣的程式碼
myFunction();
而你的函式宣告卻在b.php中
function myFunction(){// do something}
解決:這種情況一般發生在PHP初學者身上,他們在呼叫函式時卻忘了PHP不會自動的進行檔案關聯或引用。也就是說上面的情況中a.php與b.php根本就不會產生任何關係。這個時候你需要使用include()之類的函式將兩者關聯起來。
原因5:你對該函式的呼叫程式碼,寫在了與函式宣告不同的檔案中,你也引入了該檔案。但是你的函式呼叫程式碼位於引入檔案程式碼之前。例如,你在a.php執行函式呼叫,而在b.php中宣告函式。
a.php程式碼
myFunction();include("b.php");
b.php程式碼
function myFunction(){ echo "123";}
解決:像上面的程式碼這樣,在執行時就會報錯。因為PHP在執行函式呼叫時找不到該函式的宣告。所以,絕對不要把函式的呼叫寫在函式宣告檔案被引入之前。當然,如果你是在同一個php檔案當中,你完全可以把呼叫函式寫在函式宣告之前。
原因6:你連續兩次使用相同名稱來定義一個函式,例如
function myFunction(){}
Fatal error:Cannot redeclare myfunction()(previously declared in(path):2)in(path) on line 1
找到已經宣告過的函式,看看是什麼需要導致你再次定義了它。如果只是單純的忘記之前已經定義過,那麼將其中一個宣告刪除掉就是。當然,你的情況可能給複雜。比如你的指令碼檔案排列異常混亂,並且你可能使用了大量的include()之類的函式,這將導致你很難從混亂的程式碼當中理清思路。
一、錯誤型別:PHP致命錯誤
Error type: PHP Fatal error
Fatal error: Call to undefined function (a) in (b) on line (c)
二、錯誤描述:
該錯誤報告表示你正企圖呼叫未經定義的函式(function),其中
a----表示未定義的函式名;
b----出現該段指令碼的路徑;
c----企圖呼叫未定義函式的行號。
d----第二次定義該函式時的行號。
三、原因及解決方法:
原因1:你的確沒有宣告過該函式。例如,直接呼叫下面的函式
myFunction();// 這裡根本就沒有這個函式
結果如下
Fatal error:Call to undefinedfunction myFunction()in(path) on line 1
解決:
仔細檢測你的程式中是否宣告過該函式。
原因2:你在函式宣告時用的名稱和你在呼叫時用的名稱不相同,例如
function myFunction(){// do something}myFuntion();// 這裡少寫了一個字母C
解決:這是很多初學者最容易犯的一個錯誤。有時候因為少寫,或者多寫,寫錯一個字母而導致很長時間都檢查不出來。
原因3:你在老版本的PHP下呼叫新版本的PHP內建函式而產生的錯誤。因為你的老版本中這個PHP內建函式根本就不存在。例如,你在PHP老版本中呼叫mime_content_type()
Fatal error:Call to undefinedfunction mime_content_type()
解決:翻開PHP手冊仔細核對你所使用的內建函式到底適用於PHP的哪些版本。在PHP手冊當中對每一個內建函式都註明了詳細的版本限制。例如(PHP 4 >= 4.3.0, PHP 5).所以,解決辦法就是升級你的PHP版本,或者改換同類型的其他內建函式。
原因4:你對該函式的呼叫程式碼,寫在了與函式宣告不同的檔案中。例如,你在a.php檔案中寫了這樣的程式碼
myFunction();
而你的函式宣告卻在b.php中
function myFunction(){// do something}
解決:這種情況一般發生在PHP初學者身上,他們在呼叫函式時卻忘了PHP不會自動的進行檔案關聯或引用。也就是說上面的情況中a.php與b.php根本就不會產生任何關係。這個時候你需要使用include()之類的函式將兩者關聯起來。
原因5:你對該函式的呼叫程式碼,寫在了與函式宣告不同的檔案中,你也引入了該檔案。但是你的函式呼叫程式碼位於引入檔案程式碼之前。例如,你在a.php執行函式呼叫,而在b.php中宣告函式。
a.php程式碼
myFunction();include("b.php");
b.php程式碼
function myFunction(){ echo "123";}
解決:像上面的程式碼這樣,在執行時就會報錯。因為PHP在執行函式呼叫時找不到該函式的宣告。所以,絕對不要把函式的呼叫寫在函式宣告檔案被引入之前。當然,如果你是在同一個php檔案當中,你完全可以把呼叫函式寫在函式宣告之前。
原因6:你連續兩次使用相同名稱來定義一個函式,例如
function myFunction(){}
function myFunction(){}
結果如下
Fatal error:Cannot redeclare myfunction()(previously declared in(path):2)in(path) on line 1
解決:
找到已經宣告過的函式,看看是什麼需要導致你再次定義了它。如果只是單純的忘記之前已經定義過,那麼將其中一個宣告刪除掉就是。當然,你的情況可能給複雜。比如你的指令碼檔案排列異常混亂,並且你可能使用了大量的include()之類的函式,這將導致你很難從混亂的程式碼當中理清思路。