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 md5下16位和32位的实现代码
Apr 09 PHP
PHP中的extract的作用分析
Apr 09 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
php分页示例分享
Apr 30 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 PHP
php使用Jpgraph绘制3D饼状图的方法
Jun 10 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
详解PHP归并排序的实现
Oct 18 PHP
php实现留言板功能(代码详解)
Mar 28 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
Oct 30 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实现小型站点广告管理(修正版)
2006/10/09 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
PHP设计模式之迭代器模式的深入解析
2013/06/13 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
javascript 带有滚动条的表格,标题固定,带排序功能.
2009/11/13 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
Python简单基础小程序的实例代码
2019/04/28 Python
Python列表对象实现原理详解
2019/07/01 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
Python Switch Case三种实现方法代码实例
2020/06/18 Python
如何真正的了解python装饰器
2020/08/14 Python
如何在pycharm中安装第三方包
2020/10/27 Python
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
MySQL常用慢查询分析工具详解
2022/08/14 MySQL
box-shadow单边阴影的实现
2023/05/21 HTML / CSS