PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function

 更新时间:2017年02月05日 21:09:14   投稿:mdxy-dxy  
这篇文章主要介绍了PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function,需要的朋友可以参考下

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

Error type: PHP Fatal error
Fatal error: Cannot redeclare (a) (previously declared in (b)) in (c) on line (d)

2、错误描述:

该错误报告表示你正企图对已经定义过的函数进行再次定义,其中

a----表示重复定义的函数名;
b----第一次定义该函数时的文件名称及行号;
c----第二次定义该函数时的文件名称;
d----第二次定义该函数时的行号。

3、原因及解决方法:

原因:你连续两次使用相同名称来定义一个函数,例如

function myFunction(){}
function myFunction(){}

结果如下

Fatal error:Cannot redeclare myfunction()(previously declared in(path):2)in(path) on line 1

解决:

找到已经声明过的函数,看看是什么需要导致你再次定义了它。如果只是单纯的忘记之前已经定义过,那么将其中一个声明删除掉就是。比如你的脚本文件排列异常混乱,并且你可能使用了大量的include()之类的函数,这将导致你很难从混乱的代码当中理清思路。不过,如果你的PHP版本比较新(PHP 5.3.8+)貌似就可以用命名空间来解决那种的确有重复定义函数必要的情况。

4 PHP严重致命错误处理解决举例说明如下


1)在同一个文件中重复声明了两次同名的类:

例如:

<?php 
class Foo {} 
// some code here 
class Foo {} 
?>

在第二个 Foo 的地方就会报错。

解决:去掉第二个Foo,或者重命名。

为了防止重复定义,可以在定义一个新的类的时候判断一下这个类是否已经存在:

if(class_exists('SomeClass') != true) 
{ 
 //put class SomeClass here 
} 

2)重复包含相同的类文件:

例如:对于某个类文件some_class.php,在a.php中

include "some_class.php"; 

include "some_class.php";

在b.php中

include "a.php"; 
include "some_class.php"; 
include "a.php";
include "some_class.php";

就会报错。

解决:将上述的include全部替换为include_once

3)该类为PHP类库中内置的类。

判断方法:在一个空文件中写入

<?php 

class Com 
{ 
 

} 
?>

这时候提示Cannot redeclare class Com,说明这个类就是PHP内置的类。不能使用。

另外,要避免使用太大众化的类名,比如Com,这个类在Linux使用可能是正常的,在Windows环境却无法运行。

 

再记一个网上找到的解决方法,可能在某些场合有用,先记着

if (!class_exists('pageModule')){ 
require_once(PATH_site.'fileadmin/scripts/class.page.php');
}

上面的办法不适用于使用了php __autoload类加载的方法 ,但己经可以解决办法问题了,__autoload是自动加载的我们只要把相同类名找出来然后重命名即可。

相关文章

  • JS中encodeURIComponent函数用php解码的代码

    JS中encodeURIComponent函数用php解码的代码

    在JS中使用了encodeURIComponent对中文进行编码在PHP中使用iconv('UTF-8','gb2312',$q);就可以得到你需要的字串了,其中gb2312根据你实际应用来定如还不明白为什么看下面的文章
    2012-03-03
  • php基本函数汇总

    php基本函数汇总

    本文给大家汇总了16个常见的php基本函数,涵盖的面很广,这里推荐给大家,希望对大家学习php能够有所帮助。
    2015-07-07
  • PHP实现提高SESSION响应速度的几种方法详解

    PHP实现提高SESSION响应速度的几种方法详解

    这篇文章主要介绍了PHP实现提高SESSION响应速度的几种方法,结合实例形式分析了php操作session的机制与提高session响应速度的常见操作技巧,需要的朋友可以参考下
    2019-08-08
  • 域名和cookie问题(域名后缀)

    域名和cookie问题(域名后缀)

    偶然想到一个问题:www.g.cn能把cookie设置为.g.cn,那么www.com.cn能设置把cookie设置为.com.cn吗
    2012-10-10
  • PHP zlib扩展实现页面GZIP压缩输出

    PHP zlib扩展实现页面GZIP压缩输出

    GZIP(GNU-ZIP)是一种压缩技术。经过GZIP压缩后页面大小可以变为原来的30%甚至更小。这样用户浏览的时候就会感觉很爽很愉快!
    2010-06-06
  • php微信开发接入

    php微信开发接入

    这篇文章主要为大家详细介绍了php微信开发接入,通过检验signature对请求进行校验,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • php中获取关键词及所属来源搜索引擎名称的代码

    php中获取关键词及所属来源搜索引擎名称的代码

    有时候我们需要知道用户通过哪个搜索引擎,通过拿个关键词访问我们页面,当然js也可以实现,但这里介绍下php的实现代码。
    2011-02-02
  • PHP调用Linux命令权限不足问题解决方法

    PHP调用Linux命令权限不足问题解决方法

    这篇文章主要介绍了PHP调用Linux命令权限不足问题解决方法,本文是解决项目问题总结而来,通过修改sudo配置文件解决无权限执行命令问题,需要的朋友可以参考下
    2015-02-02
  • 在Linux系统的服务器上隐藏PHP版本号的方法

    在Linux系统的服务器上隐藏PHP版本号的方法

    这篇文章主要介绍了在Linux系统的服务器上隐藏PHP版本号的方法,有助于预防攻击者针对PHP详细版本的漏洞而发起的攻击,需要的朋友可以参考下
    2015-06-06
  • php实现的支持断点续传的文件下载类

    php实现的支持断点续传的文件下载类

    这篇文章主要介绍了php实现的支持断点续传的文件下载类及其用法实例,详细讲述了PHP实现断点续传下载的原理及代码实现方法,非常具有实用价值,需要的朋友可以参考下
    2014-09-09

最新评论