You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:42:20