PHP严重致命错误处理:
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";
就会报错。drop table if exists admin
解决:将上述的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是⾃动加载的我们只要把相同类名出来然后重命名即可。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。