袁来如此的工作笔记
袁来如此的工作笔记
竹杖芒鞋轻胜马,谁怕? 一蓑烟雨任平生。

Fatal error: Call to undefined function

浏览量:743

PHP常见错误处理之致命错误(一)----函数未定义


一、错误类型:PHP致命错误

Error type: PHP Fatal error

Fatal error: Call to undefined function (a) in (b) on line (c)


二、错误描述:

该错误报告表示你正企图调用未经定义的函数(function),其中

a----表示未定义的函数名;

b----出现该段脚本的路径;

c----企图调用未定义函数的行号。


三、原因及解决方法:

原因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文件当中,你完全可以把调用函数写在函数声明之前。


打赏