Apache仅能加载根目录index.php,PHP访问报错及路由404求助
问题解决方案
一、修复直接访问控制器的500错误
1. 视图文件路径错误
控制器文件中使用相对路径引用视图时,PHP会以当前工作目录(而非脚本所在目录)为基准,导致找不到文件。修改controllers/index.php中的require语句:
// 推荐使用基于脚本目录的相对路径(灵活,适配目录变更) require(__DIR__ . '/../views/home.view.php'); // 或直接使用绝对路径 // require('/var/www/html/capstone/views/home.view.php');
__DIR__是PHP魔术常量,代表当前脚本所在的目录(即/var/www/html/capstone/controllers),加上../views/即可定位到正确的视图目录。
2. dd()函数未定义
signup.php中调用的dd()是自定义函数,需先引入定义它的文件(如工具类、助手文件):
// 假设dd()定义在根目录的helpers.php中 require(__DIR__ . '/../helpers.php');
若没有该函数,可临时实现简易版本替代:
function dd($data) { var_dump($data); die(); }
二、修复路由404问题
当前.htaccess的重写规则不完整,且存在语法错误(Rewrite On应为RewriteEngine On)。替换为完整规则:
RewriteEngine On # 排除真实存在的文件和目录 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 将所有请求转发到入口文件(假设根目录index.php是路由器入口) RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
此规则会将/signup这类非文件/目录的请求转发到入口文件,由路由器解析处理。
三、强制显示PHP错误(调试用)
若.htaccess的php_flag display_errors 1未生效,可在PHP脚本开头添加以下代码强制开启错误显示:
ini_set('display_errors', 1); ini_set('error_reporting', E_ALL);
也可检查PHP全局配置文件php.ini,确保display_errors = On和error_reporting = E_ALL。
内容的提问来源于stack exchange,提问作者surfturkey
相关产品推荐
相关产品推荐

