You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

页面跳转时navbar.php中require引入config.php失败问题求助

问题描述
<?php
require 'config.php';

$admin = new Admin();

if (isset($_SESSION['user_id'])) {
    $user_id = $_SESSION['user_id'];
    $res = $admin->ret("SELECT * FROM `user` WHERE `user_id` = '$user_id'");
    $user = $res->fetch(PDO::FETCH_ASSOC);
}
?>

错误情况

在根目录的index.php中引入这段代码时,能正常加载config.php,但跳转到子目录下的页面(比如views/auth/auth.php)时,会触发以下错误:

Warning: require(config.php): Failed to open stream: No such file or directory in C:\xampp\htdocs\Web\includes\navbar.php on line 2

Fatal error: Uncaught Error: Failed opening required 'config.php' (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\Web\includes\navbar.php:2 Stack trace: #0 C:\xampp\htdocs\Web\views\auth\auth.php(20): include() #1 {main} thrown in C:\xampp\htdocs\Web\includes\navbar.php on line 2

目录结构

目录结构

解决方案

问题核心是PHP文件包含的路径解析逻辑:PHP会以当前执行的入口脚本所在目录为基准解析相对路径,而非包含代码的文件所在目录。在index.php(根目录)中引入navbar.php时,require 'config.php'会从根目录查找文件;但在views/auth/auth.php中引入时,PHP会从views/auth/目录找config.php,自然找不到。

推荐以下三种解决方式:

  • 使用绝对路径(最可靠)
    利用__DIR__常量(当前文件所在目录的绝对路径)构建正确路径,无论入口文件在哪都能找到目标:

    require __DIR__ . '/../config.php';
    

    解释:__DIR__对应C:\xampp\htdocs\Web\includes,/../会回到Web根目录,再指向config.php。

  • 设置全局包含路径
    在所有入口文件(如index.php、auth.php)开头,将项目根目录添加到PHP的包含路径:

    set_include_path(get_include_path() . PATH_SEPARATOR . realpath(__DIR__));
    

    之后直接require 'config.php'就能从根目录查找文件。

  • 基于服务器根目录的绝对路径
    利用$_SERVER['DOCUMENT_ROOT']获取服务器网站根目录,拼接目标文件路径:

    require $_SERVER['DOCUMENT_ROOT'] . '/Web/config.php';
    

    注意:这种方式依赖服务器配置,若DOCUMENT_ROOT不是C:\xampp\htdocs需调整路径。

内容的提问来源于stack exchange,提问作者Kaushal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:57:45