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语法速查表
Dec 06 PHP
php你的验证码安全码?
Jan 02 PHP
PHP得到某段时间区间的时间戳 php定时任务
Apr 12 PHP
php中如何防止表单的重复提交
Aug 02 PHP
php实现邮件发送并带有附件
Jan 24 PHP
php时间戳转换的示例
Mar 31 PHP
Thinkphp中的volist标签用法简介
Jun 18 PHP
在Windows XP下安装Apache+MySQL+PHP环境
Feb 22 PHP
ecshop后台编辑器替换成ueditor编辑器
Mar 03 PHP
[原创]php求圆周率的简单实现方法
May 30 PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 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 文件上传模型,支持多文件上传
2009/08/13 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
php操作xml并将其插入数据库的实现方法
2016/09/08 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
Javascript 中的 &amp;&amp; 和 || 使用小结
2010/04/25 Javascript
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
详解webpack 热更新优化
2018/09/13 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
python分布式环境下的限流器的示例
2017/10/26 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
解决python 文本过滤和清理问题
2019/08/28 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
Python调用C语言程序方法解析
2020/07/07 Python
Python实现扫码工具的示例代码
2020/10/09 Python
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
关键字throw与throws的用法差异
2016/11/22 面试题
后勤部经理岗位职责
2014/02/23 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang