配置文件必须用 require_once 而非 include,因其加载失败会中止脚本,避免因缺失常量、凭证等导致静默错误;应使用 dir 拼接绝对路径确保稳定加载。

配置文件必须用 require,不能用 include
配置文件(比如 config.php)一旦加载失败,后续代码大概率会因缺失数据库凭证、路径常量或开关定义而崩溃,甚至引发数据误操作。用 include 只发 E_WARNING 并继续执行,反而掩盖问题、放大风险。
常见错误现象:
Notice: Undefined constant DB_HOST in /path/to/app.php on line 12Warning: mysqli_connect(): php_network_getaddresses: getaddrinfo failed in db.php- 页面空白但无报错——因为
include失败后脚本还在跑,只是变量/常量全为空
require_once 是更稳妥的选择
配置文件通常在入口处加载一次,重复 require 可能触发“Constant already defined”或“Cannot redeclare function”错误。尤其当多个模块都尝试加载同一份 config.php 时,require_once 能避免这类冲突。
使用场景:
- 入口文件(如
index.php或public/index.php)中加载主配置 - 框架初始化前统一注入环境变量和连接参数
- 不希望因自动加载机制或条件分支导致多次包含
注意:require_once 的文件路径必须完全一致(包括大小写、符号、是否带 ./),否则 PHP 会认为是不同文件而重复加载。
绝对路径 + __DIR__ 避免路径解析失败
配置文件位置一旦变动,相对路径(如 require 'config.php')极易失效。PHP 不会按 include_path 查找配置文件,而是优先从当前工作目录(getcwd())开始找,这在 CLI 和 Web 环境下可能完全不同。
访问全球海洋潮汐模型。功能包括查询指定日期、时间和地点的潮高、潮汐极值及格点天气数据。
正确写法示例:
require_once __DIR__ . '/config.php';
关键点:
-
__DIR__返回的是该行代码所在文件的目录,稳定可靠 - 不要依赖
set_include_path()来定位配置文件——它本就不是为配置设计的 - 避免
require '../config.php'这类易受调用栈影响的写法
别用 @include 抑制配置加载失败
有人为“让页面不报错”,在配置加载前加 @ 抑制警告,例如:@include 'config.php'。这是危险操作:
-
@只压制E_WARNING,但不会让缺失的常量或函数凭空出现 - 后续代码可能静默使用默认值(如空字符串当数据库密码),造成连接拒绝或 SQL 注入风险
- 日志里看不到任何线索,排查成本陡增
真要兜底,应显式判断并抛出异常:
if (!file_exists(__DIR__ . '/config.php')) {
throw new RuntimeException('Config file missing: ' . __DIR__ . '/config.php');
}
require_once __DIR__ . '/config.php';
配置加载不是“可选动作”,而是启动前提。哪怕只差一个 DB_PASS 没定义,后面所有数据库操作都不可信——这点比语法细节更重要。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










