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与ASP
Oct 09 PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 PHP
一个PHP分页类的代码
May 18 PHP
解析thinkphp基本配置 convention.php
Jun 18 PHP
php实现简单洗牌算法
Jun 18 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
Yii清理缓存的方法
Jan 06 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
php外部执行命令函数用法小结
Oct 11 PHP
thinkphp关于简单的权限判定方法
Apr 03 PHP
PHP实现小程序批量通知推送
Nov 27 PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 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
DedeCms模板安装/制作概述
2007/03/11 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
如何在PHP中使用数组
2020/06/09 PHP
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
2018/11/06 Javascript
express 项目分层实践详解
2018/12/10 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
python实现读取并显示图片的两种方法
2017/01/13 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
python中np是做什么的
2020/07/21 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
python之随机数函数的实现示例
2020/12/30 Python
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
自我评价范文点评
2013/12/04 职场文书
syb养殖创业计划书
2014/01/09 职场文书
给同学的道歉信
2014/01/16 职场文书
新三好学生主要事迹
2014/01/23 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
食品安全承诺书范文
2014/08/29 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
JVM钩子函数的使用场景详解
2021/08/23 Java/Android