我有以下错误
致命错误:无法在第5行的/home/content/63/8026363/html/include/user_database.php中重新声明类数据库
链接到该行
类数据库
但我没有在任何我能看到的地方重新宣布这一点。
我已经检查了所有包含文件但仍然看不到它。
我现在已将名称更改为user_database1.php,这在我的WHOLE系统中只包含一次,我仍然收到相同的消息!
这只发生在我的root / admin目录中。 当我将文件移动到根目录并将包含文件从../file.php更新到file.php时,它工作得很好。
我无法理解为什么在/ admin目录中使用file.php并使用../包含文件不起作用!
任何人都可以提供这方面的经验吗?或者是一个潜在的解决方案。
我将从相关文件的顶部提供一些代码..
<?php
include("../include/session.php");
include("../include/admin_database.php");
显然这是问题,但我无法理解为什么!
希望有人可以帮忙!
(由于提交了以下很多答案,问题已得到显着更新)
答案 0 :(得分:3)
如果您将文件包含两次,则会重新声明该文件。请使用include_once()
来轻松预防。
如果您不确定该类最初声明的位置,可以使用Reflection API获取文件名和代码行:
$class = 'Database';
if(class_exists($class))
{
$oRefl = new ReflectionClass($class);
$message = sprintf('Class %s already defined in %s on line %s.', $class, $oRefl->getFileName, $oRefl->getStartLine);
throw new DomainException($message);
}
将它放在您定义类Database
的行之前,以找出最初定义该类的文件。
答案 1 :(得分:1)
检查php是否已定义名为Database.php的文件。 也许你正在使用一些框架或库。
答案 2 :(得分:1)
您可能已多次包含数据库类,快速解决此问题的方法是将类似内容添加到类的顶部:
if(!class_exists('Database')){
class Database{
// so on
}
这可以确保您的课程只定义一次。