VS Code 中 PHP include 路径报错本质是 Intelephense 静态分析路径与运行时不符,需正确配置 intelephense.environment.includePaths、设置入口文件、同步 php.ini include_path 到插件配置,并确保本地/容器环境一致。

PHP include 路径出错,本质是运行时路径和编辑器认知不一致
VS Code 本身不执行 PHP,它只是编辑器。你看到的 include 报错(比如 “Unresolved function” 或红色波浪线),几乎全是 PHP Intelephense、PHP Debug 或其他扩展在静态分析时“猜错了”当前工作目录或入口文件位置。真实运行(php index.php)可能完全没问题——这说明问题不在 PHP 解释器,而在 VS Code 的路径推导逻辑。
检查并修正 intelephense.environment.includePaths
这是最常被忽略的配置项。Intelephense 默认只扫描当前工作区根目录,如果你的 include 指向了上层目录(如 ../config/db.php)或 vendor 外的公共库,它就找不到。
- 打开 VS Code 设置(
Ctrl+,或Cmd+,),搜索intelephense.environment.includePaths - 点击
Edit in settings.json,添加绝对路径或相对于工作区的路径,例如:"intelephense.environment.includePaths": [ "/var/www/myproject/lib", "${workspaceFolder}/../shared-utils" ] - ⚠️ 注意:不能用
../这类相对写法直接填入数组;必须用${workspaceFolder}变量展开,否则无效 - 改完保存,重启 VS Code 窗口(仅重载窗口不够)
入口文件没设对,__DIR__ 和 require_once 就会“迷路”
Intelephense 依赖你指定的“主入口文件”来推算 __DIR__ 和相对路径起点。如果你从 api/v1/user.php 启动,但 VS Code 认为你在 tests/ 下编辑,所有基于 __DIR__ 的包含都会偏移。
- 右键点击你的实际入口文件(如
public/index.php),选择Intelephense: Set as entry point - 确认状态栏右下角出现
Entry point: public/index.php - 如果项目有多个入口(CLI + Web),可配合
intelephense.environment.documentRoot区分,例如:"intelephense.environment.documentRoot": "${workspaceFolder}/public"
别让 include_path 配置骗过你自己
PHP 的 ini 中 include_path 是运行时生效的,VS Code 的静态分析**完全不读这个值**。你在 php.ini 里加了 /opt/php-libs,Intelephense 依然会标红——除非你同步加进 includePaths。
立即学习“PHP免费学习笔记(深入)”;
- 运行
php --ini查看加载的php.ini位置 - 运行
php -r "echo get_include_path();"确认实际生效路径 - 把这些路径手动补到
intelephense.environment.includePaths,不要指望它自动继承 - 如果你用的是 Docker 或远程开发(Dev Containers),确保这些路径是容器内路径,并且 VS Code 连接的是容器内的 PHP 环境(而非本地)
includePaths、入口文件设定、以及本地/容器环境是否一致——这三个地方配错一个,提示就永远红着。











