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 内存缓存加速功能memcached安装与用法
Sep 03 PHP
PHP中使用数组实现堆栈数据结构的代码
Feb 05 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
php数组指针操作详解
Feb 14 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
YII分模块加载路由的实现方法
Oct 01 PHP
PHP的mysqli_stmt_init()函数讲解
Jan 24 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 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 max_execution_time执行时间问题
2011/07/17 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
php实现socket推送技术的示例
2017/12/20 PHP
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
10款最好的Web开发的 Python 框架
2015/03/18 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
python爬虫的工作原理
2017/03/05 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
文明餐桌行动实施方案
2014/02/19 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
教育读书笔记
2015/07/02 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js