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

如何在子文件夹的PHP文件中调用根目录的数据库连接文件(不使用../相对路径)?

无需使用相对路径符号调用根目录connection.php的解决方案

我来帮你搞定这个路径问题,你之前尝试用URL路径来require文件是走不通的——PHP的require/include需要的是服务器本地的文件系统路径,不是Web访问的URL。下面给你几个靠谱的方案:

方案1:使用$_SERVER['DOCUMENT_ROOT'](最推荐)

$_SERVER['DOCUMENT_ROOT']是Web服务器配置的网站根目录绝对文件路径,不管你的PHP文件在哪个子文件夹里,用它都能直接指向根目录的文件:

require($_SERVER['DOCUMENT_ROOT'] . '/connection.php');

比如你的网站根目录在/var/www/html,这个变量就会返回该路径,拼接后就是/var/www/html/connection.php,完全不受当前文件所在目录影响,也不用写../这类相对路径符号。

方案2:定义全局根路径常量

在connection.php文件里添加一行定义根目录的常量:

// 在connection.php中新增
define('ROOT_PATH', __DIR__); // __DIR__会返回当前文件所在的目录,也就是网站根目录

之后不管在哪个子文件里,只要用这个常量就能调用connection.php:

// 在client/list.php里
require(ROOT_PATH . '/connection.php');

这个方案的好处是如果以后根目录路径变化,只需要修改connection.php里的常量定义就行。

方案3:配置PHP的include_path

你可以把网站根目录添加到PHP的include_path中,这样PHP会自动在这些目录里查找你要require的文件:

方法A:修改php.ini(全局生效)

找到php.ini里的include_path配置项,把你的网站根目录加进去:

include_path = ".:/path/to/your/web/root"

方法B:在代码中动态设置(仅当前请求生效)

在list.php的开头添加:

set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT']);

之后你就可以直接像根目录文件那样调用:

require('connection.php');

为什么你之前的尝试失败了?

  • 第一种写法require($_SERVER['HTTP_HOST'].'/connection.php'):$_SERVER['HTTP_HOST']是你的域名(比如example.com),拼接后得到的是example.com/connection.php,这是Web访问的URL,不是服务器本地的文件路径,PHP会把它当成相对当前文件的路径去查找,自然找不到。
  • 第二种写法存在语法错误(引号拼接出错),而且本质上还是在使用URL路径,同样不符合PHPrequire对路径的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:14:07