Call to undefined function怎么解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Call to undefined function怎么解决?相关的知识,希望对你有一定的参考价值。

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

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

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

网站上面出现undefined 啥意思? 咋解决?

嗯,undefined 意思是网页未找到,无法连接,尝试刷新下啊,还有就是检查网址是否有错,如果还不行,可能就是你所找的网站/页已经更改网址了,所输入网址不存在了,对了,还有一种可能,网速不好也有可能出现那种情况。

Fatal error: Call to undefined function fnmatch() 解决

我的PHP版本是5.6.30,linux 是CentOS 6.6,nginx,也不知啥问题,看了官方:

https://secure.php.net/manual/en/function.fnmatch.php

上面有段警告:

Warning

For now, this function is not available on non-POSIX compliant systems except Windows.  大致意思fnmatch不能在除windows以外非POSIX系统上使用,

下面也贴出了相应替换的代码

```

<?php
if(!function_exists(‘fnmatch‘)) {

    function fnmatch($pattern$string) {
        return preg_match("#^".strtr(preg_quote($pattern‘#‘), array(‘\*‘ => ‘.*‘‘\?‘ => ‘.‘))."$#i"$string);    //这里用preg_quote替换了
    } // end

// end if
?>

```

官方给出了好几种替换方式,也是可行的,如果有直接的解决方案,务必告知我下,不胜感谢。

 

以上是关于Call to undefined function怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章

Fatal error: Call to undefined function oci_connect()

Call to undefined function ThinkC()

BadMethodCallException : Call to undefined method AppModelsArticle::setContainer()

ThinkPHP出现Call to undefined function bcadd怎么解决

Call to undefined function openssl_decrypt()

织梦提示Call to undefined function解决办法