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 相关文章推荐
推荐一篇入门级的Class文章
Mar 19 PHP
phpmyadmin 3.4 空密码登录的实现方法
May 29 PHP
zend optimizer在wamp的基础上安装图文教程
Oct 26 PHP
一个基于phpQuery的php通用采集类分享
Apr 09 PHP
两千行代码的PHP学习笔记汇总
Oct 05 PHP
php实现根据词频生成tag云的方法
Apr 17 PHP
Zend Framework教程之Resource Autoloading用法实例
Mar 08 PHP
PHP控制前台弹出对话框的实现方法
Aug 21 PHP
基于php实现的验证码小程序
Dec 13 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 PHP
解决php extension 加载顺序问题
Aug 16 PHP
laravel 解决路由除了根目录其他都404的问题
Oct 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数组最大值,最小值的代码
2011/10/31 PHP
PHP利用imagick生成组合缩略图
2016/02/19 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
2017/10/17 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
vue 函数调用加括号与不加括号的区别
2020/10/29 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
spyder常用快捷键(分享)
2017/07/19 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
Python中常用的内置方法
2019/01/28 Python
Python中print和return的作用及区别解析
2019/05/05 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
python对XML文件的操作实现代码
2020/03/27 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
个人求职简历的自我评价
2013/10/19 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
钱学森观后感
2015/06/04 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
CSS3常见动画的实现方式
2021/04/14 HTML / CSS
面试中canvas绘制图片模糊图片问题处理
2022/03/13 Javascript