文档章节

PHP严重致命错误处理:php Fatal error: Cannot redeclare clas

 小星星程序员
发布于 2014/08/11 00:38
字数 756
阅读 2762
收藏 2

PHP严重致命错误处理:php  Fatal error: Cannot redeclare class or function


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+)貌似就可以用命名空间来解决那种的确有重复定义函数必要的情况。


PHP严重致命错误处理解决举例说明如下


1)在同一个文件中重复声明了两次同名的类:

例如:

<?php  

class Foo {}  


// some code here  


class Foo {}  

?>

在第二个 Foo 的地方就会报错。

解决:去掉第二个Foo,或者重命名。

为了防止重复定义,可以在定义一个新的类的时候判断一下这个类是否已经存在:

if(class_exists('SomeClass') != true)  

{  

  //put class SomeClass here  

}  

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是自动加载的我们只要把相同类名找出来然后重命名即可。



转载请注明:文章转载自:[169IT-最新最全的IT资讯]
本文标题:PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function


本文转载自:http://www.169it.com/article/881100228115462386.html

粉丝 4
博文 42
码字总数 2544
作品 0
成都
私信 提问
BAE的PHP版本SDK引入报错

为什么引入 会报错? 我已经把PHP版本的SDK复制到了当前目录, 但是我查看日志一直报 PHP Fatal error: Cannot redeclare class BaeException in wwwdata/codefs/1.jiangyong.duapp.com/wp-...

夕拾贰
2013/05/07
598
2
PHP Fatal error: Cannot redeclare class

该错误的原因是类重复地定义了。 第一种解决方法: 是对重复定义的两个类的其中一个重命名。 第二种方法是: 如果这些类是include/require进来的,那么去掉多余的include/require,或者把inc...

樂天
2013/11/23
3K
0
PHP中register_shutdown_function函数

函数说明 定义:该函数是来注册一个会在PHP中止时执行的函数 参数说明: 注册一个 callback ,它会在脚本执行完成或者 exit() 后被调用。 callback:待注册的中止回调 parameter:可以通过传...

Ocean_K
04/04
11
0
PHP 的错误级别

php 中的错误级别有: 错误级别用2进制的值来表示的: 1111 1111 1111 111从左到右,每位上的1,代表一种错误级别   fatal error致命错误: 0000 0000 0000 001 开启 1   warning 警告错误 : ...

努力的C
2017/10/09
0
0
如何处理 PHP 的错误与异常(笔记)

这话题已经没有什么新意了,这里只是做做笔记,作为思路的一种整理,也以便后续忘了可以回来这里查找。 错误 以下是 PHP 最常见的几种错误: 运行上面代码,页面输出以下信息: 在生产环境下...

aisuhua
09/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud Sleuth 整合 feign 源码分析

org.springframework.cloud.sleuth.instrument.web.client.feign.TraceFeignClient 包括创建span一些参数

xiaomin0322
15分钟前
2
0
Less 延伸

extend 是一个 Less 伪类,它通过使用 :extend 选择器在一个选择器中扩展其他选择器样式。 扩展语法 扩展可以是附加到选择器,也可以是集中放置在规则,看上去像是带有选择器参数的可选伪类,...

凌兮洛
16分钟前
2
0
RedHat 7.0系统中安装mysql 5.7.22

在安装之前,首先要查看的是,你的系统中有没有已经安装过的情况。键入rpm -qa|grep mysql,如果无任何显示,则表示没有安装过相关组件,如果有,则根据显示出来的名字,键入rpm -e --nodeps...

最菜最菜之小菜鸟
21分钟前
2
0
RPA:企业信息孤岛的“克星”

为了降本增效,近来世界范围内掀起一股流程优化的热潮,转型升级成为众多企业时刻挂在嘴边的热词。不过在企业数字化转型的过程中,信息孤岛的出现,往往成为了企业升级的绊脚石。 信息孤岛:...

UiBot
21分钟前
2
0
我的测试

我的测试

daiison
22分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部