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 相关文章推荐
文件上传的实现
Oct 09 PHP
PHP去除数组中重复的元素并按键名排序函数
Aug 18 PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
PHP企业级应用之常见缓存技术篇
Jan 27 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
php的ZipArchive类用法实例
Oct 20 PHP
smarty内置函数section的用法
Jan 22 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
PHP获取链表中倒数第K个节点的方法
Jan 18 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 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
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
一个简单php扩展介绍与开发教程
2010/08/19 PHP
php下清空字符串中的HTML标签的代码
2010/09/06 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
javascript Window及document对象详细整理
2011/01/12 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
tensorflow实现KNN识别MNIST
2018/03/12 Python
python实现爬取图书封面
2018/07/05 Python
python可视化实现代码
2019/01/15 Python
Python3.5运算符操作实例详解
2019/04/25 Python
Python类反射机制使用实例解析
2019/12/30 Python
PyQt5实现登录页面
2020/05/30 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
试用期转正鉴定评语
2014/01/27 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android