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 相关文章推荐
PHP+APACHE实现用户论证的方法
Oct 09 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 PHP
PHP XML数据解析代码
May 26 PHP
php连接函数implode与分割explode的深入解析
Jun 26 PHP
PHP 使用pcntl和libevent 实现Timer功能
Oct 27 PHP
php实现删除指定目录下相关文件的方法
Oct 20 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
Oct 20 PHP
PHP-FPM实现性能优化
Mar 31 PHP
php操纵mysqli数据库的实现方法
Sep 18 PHP
简单实现php上传文件功能
Sep 21 PHP
PHP 自动加载类原理与用法实例分析
Apr 14 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中获得视频时间总长度的另一种方法
2011/09/15 PHP
php实现的SESSION类
2014/12/02 PHP
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
python七夕浪漫表白源码
2019/04/05 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
会计电算化专业自荐信
2014/03/15 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
自查自纠整改报告
2014/11/06 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
何玥事迹观后感
2015/06/16 职场文书
商业计划书格式、范文
2019/03/21 职场文书