Call to undefined function怎么解决

发布网友 发布时间:2022-04-06 04:25

我来回答

13个回答

懂视网 时间:2022-04-06 08:47

php中的错误类型有:1、程序本身的错误;2、未定义符号;3、操作系统所带来的差异;4、PHP配置差异;5、SAPI差异;6、运行错误 ;7、PHP错误;8、定义错误处理器。

推荐:《PHP视频教程》

PHP的错误类型

一,程序本身的错误

这种错误是比较容易就可以处理的错误,比如说语法错误或者是编译器无法解析,这些错误在编译的时候,就会不通过编译,然后可以根据错误的提示,找到具体的错误代码。但当使用eval()执行的代码发生错误时,在编译期间是发现不了,它只能等到代码在执行的过程中,对其编译产生错误,如我们执行下列代码,就会在执行过程中出现错误:

<?php 
 echo "this will be echo to putty";
 eval("php error when parser");
 
?>

这种错误和其它的代码错误不同的是,在位于它之前的echo是可以输出的。而其它的代码错误是不会有任何输出的,因为编译就通不过,不会运行。

二,未定义符号

当PHP执行的时候,它可能遇到许多变量、函数等它不知道的名字,因为PHP在编译的时候,并没有完整的了解所有的符号名称、函数名等。

如果只是未定义的常量或者变量,这是只是一个通知的形式告知。但如果是遇到未定义的函数或者类,程序将会终止运行。在关于找不到类的时候,如果用户定义了叫做__autoload的函数,它将在PHP遇到一个未定义的类时调用,如果通过这个函数可以返回类,新加载的类将会被使用,不产生任何错误。

三,通用性错误

3.1 操作系统所带来的差异

一些只在某特殊的平台可用的PHP函数。

一些在某特殊的平台不可用的PHP函数。

一些在不同的平台下有着细微差别的PHP函数。

区别文件名中的路径成份的字符。

外部程序或者服务并不是在所有平台中都可用。

3.2 PHP配置差异

比如配置选项magic_quotes_gpc,如果这个选项是开启的,PHP将增加斜线到所有的外部数据中。这时,如果将程序移植至另一台没有开启这个选项的服务器上上时,用户的输入就会有问题了。处理类似差异的办法是检查PHP代码并通过ini_get()函数查看选项是否启用,然后作一个统一的调整。

register_globals : 该设置决定PHP是否引入GET,POST,cookie,环境变量或者服务器变量为全局变量。一般避免使用。

allow_url_fopen: 如果这个选项设置为false,对URL文件操作的功能是关闭的。

3.3 SAPI差异

四,运行错误

如对硬盘数据或者网络操作以及数据库调用时,由于PHP本身以外的因素所造成的错误。

五,PHP错误

PHP中的错误机制是被所有的PHP内置函数使用的,通常这个简单的机制打印出一个错误信息,包括一些错误相关的基本信息。

错误级别分为:

E_ERROR:严重错误。
E_WARNING:最普通的错误类型。
E_PARSE:解析错误在编译的时候发生。
E_STRICT:这个错误级别是唯一不包含在E_ALL常量中的,为了让PHP4到PHP5的迁移更加容易。
E_NOTICE:表示运行的代码可能在操作一些未知的事情。
E_CORE_ERROR:由于扩展启动失败等导致的。
E_COMPILE_WARNING:编译的时候出现的警告,告诉用户一些不推荐使用的语法信息。
E_COMPILE_ERROR:编译错误。
E_USER_ERROR
E_USER_WARNING
可以用error_reporting(Integer)函数来设置哪些错误被报告。如所有的错误,表示为E_ALL ,除了通告以外的所有错误,可以表示为E_ALL & ~E_NOTICE.
display_errors(boolean):这个设置控制错误是否作为PHP输出的一部分显示出来。
log_errors(boolean),这个设置控制错误是否记录。日志的地址是通过error_log(String)设置决定的。默认情况下,错误被记录到WEB服务器的错误日志中。
html_errors(boolean):设置控制是否在错误信息中采用HTML格式 。

六,定义错误处理器

可以调用 set_error_handler(error_handle_function,error_types)指定错误处理器。如

function customError($errno, $errstr, $errfile, $errline)
 { 
 echo "<b>Custom error:</b> [$errno] $errstr<br />";
 }
set_error_handler("customError"); // 默认为所有的错误,就是E_ALL.

热心网友 时间:2022-04-06 05:55

一、错误类型: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()之类的函数,这将导致你很难从混乱的代码当中理清思路。

热心网友 时间:2022-04-06 07:13

1、你的函数没有写在项目文件common文件夹下的common.php或者function.php文件里
2、你没有开启调试模式,在项目文件夹下的config文件夹里的config.php里写入"APP_DEBUG"=>true或者入口文件里写define(“APP_DEBUG”,true),并且删除该项目文件内的runtime.php文件。

热心网友 时间:2022-04-06 08:47

未定义的函数的调用

热心网友 时间:2022-04-06 10:39

1、你的函数没有写在项目文件common文件夹下的common.php或者function.php文件里
2、你没有开启调试模式,在项目文件夹下的config文件夹里的config.php里写入"APP_DEBUG"=>true或者入口文件里写define(“APP_DEBUG”,true),并且删除该项目文件内的runtime.php文件。
暂时就知道这么多,希望有用。

热心网友 时间:2022-04-06 12:47

先定义函数

热心网友 时间:2022-04-06 15:11

555

热心网友 时间:2022-04-06 17:53

(⊙o⊙)

热心网友 时间:2022-04-06 20:51

热心网友 时间:2022-04-07 00:05

帮你加加人气

热心网友 时间:2022-04-07 03:37

没定义的函数,难道是你忘记加声明了,加上声明啊

热心网友 时间:2022-04-07 07:25

打电话去关功能

热心网友 时间:2022-04-07 11:29

你能不能帮我一个是

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com