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

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
{
// some code
}
?>

这时候提示Cannot redeclare class Com,说明这个类就是PHP内置的类。不能使用。

另外,要避免使用太大众化的类名,比如Com,这个类在Linux使用可能是正常的,在Windows环境却无法运行。

再记一个网上找到的解决方法,可能在某些场合有用,先记着

if (!class_exists('pageModule')){
require_once(PATH_site.'fileadmin/scripts/class.page.php');
}

上面的办法不适用于使用了php __autoload类加载的方法 ,但己经可以解决办法问题了,__autoload是自动加载的我们只要把相同类名找出来然后重命名即可。

原文链接:https://www.jb51.net/article/104677.htm

PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function【转】的更多相关文章

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

    1.错误类型:PHP致命错误 Error type: PHP Fatal error Fatal error: Cannot redeclare (a) (previously declared in ...

  2. Fatal error: Cannot redeclare tran() (previously declared in

    解决方法如下: 1.你该段源码里面是不是有include 或者require 之类的包含其他文件函数 包含的文件里已经有 函数 nw() 的定义 而这段代码里又有nv()的定义 所以出现redecla ...

  3. Fatal error: Call to a member function bind_param() on a non-object in

    今天在练习 mysql是出现错误:   Fatal error: Call to a member function bind_param() on a non-object in 解决步骤: 1. ...

  4. magento后台 Fatal error: Call to a member function getId() on a non-object in错误

    后台分类管理出现错误 Fatal error: Call to a member function getId() on a non-object in 在数据库中运行以下sql语句 INSERT I ...

  5. phprpc的使用示例以及报错Fatal error: Cannot redeclare gzdecode() in D:\wamp\www\immoc\phprpc\compat.php 处理

    今天看书,发现了PHPRPC这个好东东,故在此写下来以作笔记. PHPRPC 是一个轻型的.安全的.跨网际的.跨语言的.跨平台的.跨环境的.跨域的.支持复杂对象传输的.支持引用参数传递的.支持内容输出 ...

  6. 织梦更新列表页提示Fatal error: Call to a member function GetInnerText() on a non-object 解决方法

    今天在做一个站时用到了自定义模型,遇到了些问题,在更新列表页时提示: Fatal error: Call to a member function GetInnerText() on a non-ob ...

  7. 织梦Fatal error: Call to a member function GetInnerText()

    问题:织梦修改或者添加了自定义表单后在后台修改文章的时候出现如下错误:Fatal error: Call to a member function GetInnerText() on a non-ob ...

  8. Zen Cart 138 在PHP5.3环境下出现的Fatal error: Cannot redeclare date_diff()

    Zen Cart 138 在PHP5.3环境下出现的Fatal error: Cannot redeclare date_diff() in includes/functions/functions_ ...

  9. Fatal error: Call to a member function on a non-object 的2种解决办法

    这两天被一个莫名其妙的错误:Fatal error: Call to a member function on a non-object in d://www/htdocs/inc.php 77  搞 ...

随机推荐

  1. Python控制流程

    if  elif    else的用法 三目运算符的用法 while 和 for 两种循环 break 和 continue 的用法 条件判断 if elif else if 和 elif 后面填的判 ...

  2. 19.8.2 luogu 夏令营 游

    人生第一次游记....是在学校机房,在luogu网校,在炎炎夏日,在薯条汉堡,在自己的博客里... 十二天快吗? 刚上课那会真的比较兴奋,把每天的计划都排的满满的,希望这十二天慢点,再慢点,我得好好过 ...

  3. 关于yyyy-MM-dd格式日期字符串,解析成LocalDateTime遇到的问题

    yyyy-MM-dd -> LocalDateTime 直接把yyyy-MM-dd格式的日期字符串解析成LocalDateTime会抛出异常 try { LocalDateTime localD ...

  4. Html学习之十八(表格与表单学习--统计表制作)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. SVG开发注意事项

    SVG Scalable Vector Graphics 可缩放的矢量图形 起源 在 2003 年一月,SVG 1.1 被确立为 W3C 标准,在过去很长一段时间,网页注重文字和图片的展示, SVG就 ...

  6. AGC008E Next or Nextnext(组合计数,神奇思路)

    神仙题. 排列计数,一种常见的做法是 \(i\) 向 \(p_i\) 连边. 然而这里这个就逼迫我们只能从 \(i\) 向 \(a_i\) 连边. 不过没关系,考虑从 \(i\) 向 \(p_i\) ...

  7. FileSystemResource 和 ClassPathResource 有何区别

    在FileSystemResource 中需要给出spring-config.xml文件在你项目中的相对路径或者绝对路径.在ClassPathResource中spring会在ClassPath中自动 ...

  8. HTML+css基础 css选择器的种类

    css选择器的种类 标签   权重是001 类  class权重是0010 相当于255个标签选择器 Id   权重是0100相当于255个类 *通配符   代表所有的标签   权重是0000 后代选 ...

  9. tf.ConfigProto()

    tf.ConfigProto一般用在创建session的时候用来对session进行参数配置 with tf.Session(config=tf.ConfigProto(...)...) tf.Con ...

  10. HDU-1719 Friend 数学推导

    Friend HDU - 1719 Friend number are defined recursively as follows. (1) numbers 1 and 2 are friend n ...