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边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
Jun 25 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
php中的filesystem文件系统函数介绍及使用示例
Feb 13 PHP
PHP获取网页标题的3种实现方法代码实例
Apr 11 PHP
php实现微信公众平台账号自定义菜单类
Dec 02 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
Mar 21 PHP
php中关于长度计算容易混淆的问题分析
May 27 PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 PHP
PHP实现的超长文本分页显示功能示例
Jun 04 PHP
laravel开发环境homestead搭建过程详解
Jul 03 PHP
php中数组最简单的使用方法
Dec 27 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
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
你必须知道的Javascript知识点之&quot;this指针&quot;的应用
2013/04/23 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
JSONP跨域请求实例详解
2016/07/04 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
vue.js中created方法作用
2018/03/30 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
原生javascript如何实现共享onload事件
2020/07/03 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
python构建深度神经网络(续)
2018/03/10 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
《猫》教学反思
2014/02/26 职场文书
2014两会学习心得:时代的发展
2014/03/17 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技