000webhost部署PHP项目require_once引入initialize.php失败报错求助
核心是DBConnection.php中使用相对路径../initialize.php时,PHP的运行工作目录和你预期的目录结构不匹配,导致系统无法定位到initialize.php文件。
Warning: require_once(../initialize.php): failed to open stream: No such file or directory in /storage/ssd4/040/17993040/public_html/EPS/classes/DBConnection.php on line 3
Fatal error: require_once(): Failed opening required '../initialize.php' (include_path='.:/usr/share/pear:/usr/share/php') in /storage/ssd4/040/17993040/public_html/EPS/classes/DBConnection.php on line 3
方案1:使用绝对路径引入文件(推荐,适配性最高)
PHP的__DIR__魔术常量会返回当前文件所在的绝对目录,用它构造引入路径可以完全规避相对路径受运行入口影响的问题,直接修改DBConnection.php第三行的引入代码即可:
<?php if(!defined('id17993040_epsdb')){ // 替换原有的相对路径写法 require_once(__DIR__ . "/../initialize.php"); } // 后续原有代码保持不变
方案2:统一引入逻辑优化架构
你已经在initialize.php中定义了全局的数据库配置常量,可以调整项目的加载逻辑:所有访问入口文件先引入initialize.php,再加载对应的功能类文件,不需要在类文件中反向引入配置文件,同时可以简化DB类的配置代码,避免重复写配置:
修改DBConnection.php的配置部分:
private $host = DB_SERVER; private $username = DB_USERNAME; private $password = DB_PASSWORD; private $database = DB_NAME;
这个方案还能解决后续多环境配置修改需要多处改的问题,维护更方便。
额外注意点
你当前DBConnection.php中写的数据库地址$host = "local_host"存在拼写错误,正确的本地数据库地址是localhost(没有下划线),路径问题修复后这个错误也会导致数据库连接失败,建议同步修改。
内容的提问来源于stack exchange,提问作者Coco

