致命错误:无法重新声明(PHP / Apache安装程序)

时间:2012-07-28 02:19:34

标签: apache2 php

我正在Mac(Mountain Lion)上运行Apache2 / PHP5 Web服务器。当我从Lion升级到Mountain Lion时,我失去了我的开发环境/配置。虽然试图设置一切,我已经以某种方式borked我的httpd或php.ini配置(我想,无论如何)...当我将我的浏览器指向我的localhost时,我得到臭名昭着的PHP错误:

致命错误:无法重新声明(某些随机函数)。

无论我指向哪一页,我都明白了。在丢失我的Web服务器设置之前,这没有发生,所以我确信文件没问题且所有语法都很好(整个站点也一直使用include_once和require_once)。

我认为这与我的虚拟主机设置或工作目录设置有关...我尝试了很多东西,但到目前为止还没有快乐。

我很乐意提供有用的任何/所有信息......我的机智就此结束了。任何帮助或建议将不胜感激。

4 个答案:

答案 0 :(得分:2)

您很可能更改了include_path,因此您使用不同的路径加载相同的php文件。执行此操作时,php无法告诉它是同一个文件,因此它会再次加载该文件,从而导致Cannot redeclare错误。

追踪问题的一种方法是在违规行之前添加以下内容:

echo "<pre>";
print_r(explode(PATH_SEPARATOR, get_include_path()));
print_r(get_included_files());

答案 1 :(得分:1)

  

致命错误:无法重新声明(某些随机函数)/ class

始终表示之前已定义具有SAME名称的函数或类, 看一下这个例子:

<?php


function test(){
 return 1;
}

function test(){
 return 2;
}
//will produce fatal error like yours


class A {}
class A {}
//Will say that it can't redeclare class A

这是你应该从中开始的线索 确保:,相应地设置了包含路径

要获得一些线索,请尝试:

<?php

print_r ( get_included_files() );

?>

答案 2 :(得分:0)

在我的特定情况下,它恰好是一个糟糕的虚拟主机设置。一旦我在那里修复了一种重定向问题,就解决了这个问题。

这里提供的其他答案(和评论)都非常好,并且应该帮助任何有类似问题的人调试他们的代码。你很少会像我对vhosts一样搞砸并遇到这个问题(但不是很多其他人)。非常感谢Ross Smith II,metal_fan和Jeffrey对此的帮助!

答案 3 :(得分:0)

我刚刚在另一个论坛上修复了这个问题。 就我而言,问题在于: <?php include "file.inc"; $user = new user() .... ?> <?php include "file.inc" .... ?> 我包括两次“file.inc”,这就是问题所在。 Juust将include保留在“main”文件中,这就是全部!