致命错误:即使包含包含类的文件,也找不到类


Fatal error: Class not found even though file is included which contains the class

我只是想在我的本地运行一个从服务器复制的网站。在我的config.php

define ( 'DB_SERVER', '127.0.0.1' );
define ( 'DB_USERNAME', 'user' );
define ( 'DB_PASSWORD', 'password' );
define ( 'DB_DATABASE', 'database' );
class DB_Class {
    function __construct() {
        $connection = mysql_connect ( DB_SERVER, DB_USERNAME, DB_PASSWORD ) or die ( 'Connection error -> ' . mysql_error () );
        mysql_select_db ( DB_DATABASE, $connection ) or die ( 'Database error -> ' . mysql_error () );
    }
}

在我的user.php

include_once 'config.php';
class User {
    // Database connect
    public function __construct() {
        $db = new DB_Class ();
    }
}

在我的index.php

session_start ();
include_once ('classes/user.php');
$uobj = new User ();

现在,每当我尝试创建类User的对象时,它都会在我尝试的行上返回一个Fatal error: Class 'DB_Class' not found,在本例中为第 6 行。虽然它在服务器上工作得很好。

我试图将类User扩展到类DB_Class但随后在我尝试扩展的行上再次出现相同的错误。

有人请指出问题所在。谢谢。

您的网站结构似乎是使用名为 classes 的文件夹中的两个类文件设置的。 正如此链接所建议的,包含中的相对路径很少顺利,因为它是用于所有包含(包括其他包含文件中的包含)的调用脚本路径。 除非您在路径中指定了类文件夹,否则 index.php 将不知道 config.php 文件在哪里。 您应该在用户.php文件中执行此操作。

include_once $_SERVER['DOCUMENT_ROOT'] . '/classes/config.php';

或使用

require_once dirname(__FILE__) . '/config.php';

任何一个都将删除相对链接,并允许将文件包含在目录结构中的任何位置。