PHP文件包含失败求助:相对路径无法找到指定文件
PHP 文件包含路径错误的解决方案
问题详情
使用以下代码尝试包含数据库连接文件:
include "../../db/db_connection.php";
运行时触发错误:
Warning: include(../../db/db_connection.php): Failed to open stream: No such file or directory in /var/www/html/practice/Blogs/actions/accounts/general.php on line 2
终端可正常访问目标文件,但本地服务器(localhost)运行时报错。
问题根源
PHP 中相对路径的基准是当前执行的入口脚本的目录,而非编写include语句的文件所在目录。例如,若请求入口是Blogs/index.php,当该脚本调用general.php时,相对路径会以Blogs/为起点,而非Blogs/actions/accounts/,导致路径计算错误。
可行解决方法
1. 使用绝对路径
直接写入服务器上的完整路径,彻底避免相对路径歧义:
include "/var/www/html/practice/Blogs/db/db_connection.php";
2. 基于当前文件路径构建绝对路径
利用__DIR__常量(当前文件所在目录的绝对路径)拼接目标路径,灵活性更高,适合项目迁移:
// __DIR__ 对应 /var/www/html/practice/Blogs/actions/accounts // 向上跳转两级后拼接目标文件路径 include __DIR__ . "/../../../db/db_connection.php";
3. 配置 include_path
在脚本开头或php.ini中添加项目根目录到include_path,之后可直接使用根目录下的相对路径:
set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/html/practice/Blogs/'); include "db/db_connection.php";
内容的提问来源于stack exchange,提问作者Syed Hassan Zamir
相关产品推荐
相关产品推荐

