PHP MVC项目bootstrapping阶段echo无输出与类加载故障排查
错误原因
你的问题是PHP文件引入的相对路径计算逻辑错误。PHP执行时的相对路径基准是当前被访问的入口文件(即/public/index.php)所在的目录,而非被引入的init.php所在的目录。
你在/app/init.php中写require_once 'core/App.php',实际执行时PHP会去/public/core/App.php路径下找文件,当然找不到,直接触发致命错误导致后续代码全部中断,所以看不到任何输出。
修复方案
推荐两种可行方案,任选其一即可:
方案1:直接修改init.php的引入路径(简单快速)
利用PHP的__DIR__魔术常量,它会自动返回当前文件所在的绝对路径,修改/app/init.php代码为:
<?php require_once __DIR__ . '/core/App.php'; require_once __DIR__ . '/core/Controllers.php';
方案2:入口定义全局根路径常量(适合框架长期维护)
先在/public/index.php中定义项目根路径常量,后续所有文件引入都基于该常量,避免路径混乱:
<?php // 定义项目根目录绝对路径 define('ROOT_PATH', dirname(__DIR__)); require_once ROOT_PATH . '/app/init.php'; $app = new App; echo "test";
对应修改/app/init.php的引入代码:
<?php require_once ROOT_PATH . '/app/core/App.php'; require_once ROOT_PATH . '/app/core/Controllers.php';
验证效果
修改完成后刷新浏览器,会正常输出ok!test,说明Bootstrapping逻辑执行成功,App类的构造方法正常触发。
内容的提问来源于stack exchange,提问作者maruf_ilyasa
相关产品推荐
相关产品推荐

