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


Posted in PHP onFebruary 05, 2017

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是自动加载的我们只要把相同类名找出来然后重命名即可。

PHP 相关文章推荐
PHP4与PHP5的时间格式问题
Feb 17 PHP
PHP 时间转换Unix时间戳代码
Jan 22 PHP
PHP输出XML到页面的3种方法详解
Jun 06 PHP
解析php中const与define的应用区别
Jun 18 PHP
360通用php防护代码(使用操作详解)
Jun 18 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
Jun 23 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 PHP
Laravel框架中扩展函数、扩展自定义类的方法
Sep 04 PHP
PHP利用header跳转失效的解决方法
Oct 24 PHP
PHP内核探索之变量
Dec 22 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 #PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 #PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
Feb 05 #PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 #PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 #PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 #PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
Feb 04 #PHP
You might like
用PHP实现多服务器共享SESSION数据的方法
2007/03/16 PHP
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
php判断变量类型常用方法
2012/04/24 PHP
浅谈php冒泡排序
2014/12/30 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
jQuery设置指定网页元素宽度和高度的方法
2015/03/25 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
js实现随机点名小功能
2017/08/17 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
vue自定义底部导航栏Tabbar的实现代码
2018/09/03 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
浅谈javascript错误处理
2019/08/11 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
wxpython实现图书管理系统
2018/03/12 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
pandas如何处理缺失值
2019/07/31 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
JSP&Servlet技术面试题
2015/05/21 面试题
人力资源管理专业应届生求职信
2014/04/24 职场文书
司法所长先进事迹
2014/06/02 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python
python热力图实现的完整实例
2022/06/25 Python