【发布时间】:2018-12-16 01:04:57
【问题描述】:
大家好,在我开始提问之前,我将粘贴一张我的文件夹结构的照片,以便更容易可视化。
好的,在上面突出显示的header.php 中,我有这行代码:
<?php require_once("admin/admin_pages/includes/init.php"); ?>
在那个 init.php 文件中:
<?php
require_once("functions.php");
require_once("db_config.php");
require_once("database.php");
require_once("user.php");
require_once("session.php");
require_once("photo.php");
require_once("db_object.php");
?>
但是,当我尝试打开位于我的根目录中的 index.php 文件时,会出现以下错误:
required_once 的 init.php 正在工作。但是,它似乎没有找到 init.php 文件本身所需的文件(与 init.php 位于同一目录中)。为什么会这样?
注意:当我在admin/admin_pages/index.php 页面中玩耍时,所有路径都有效。
编辑:这是我包含文件夹中内容的屏幕截图。
<?php
//Just in case an includes file is not called in the init.php file.
function classAutoloader($class)
{
$class = strtolower($class);
$path = "includes/{$class}.php";
if (file_exists($path)) {
require_once($path);
} else {
die("The file named {$class}.php was not found.");
}
}
spl_autoload_register('classAutoloader');
function redirect($location)
{
header("Location: {$location}");
}
?>
编辑:这就是给出 错误消息仅供参考。我已经设置了自动加载器功能。但是,该文件并没有丢失,应该以任一方式加载。
【问题讨论】:
-
如果错误仅针对
db_object.php显示,则意味着您之前需要的其他文件存在。可以显示文件夹dmin/admin_pages/includes/的内容吗? -
很难使用已包含文件的路径。使用
__DIR__或基本目录更容易。db_object在admin/admin_pages/includes/中吗? -
如果您的所有文件都包含类,我建议您使用自动加载器而不是自己要求它们。
-
@Bane,使用自动加载器很棒!但我建议将你的自动加载器包含在你的主 index.php 中,然后只使用自动加载器,不需要手动。如果需要,请仅在自动加载器中使用
__DIR__。 -
只是关于How to ask a good question的注释,因为一开始的结构有点难以理解。