登录功能报错求助:404未找到与403禁止访问问题排查
问题解决指南
先解决路径引发的404错误
表单action路径错误是导致404的核心原因:
在public/login.php中,原表单的action="/actions/login.php"指向服务器根目录下的actions文件夹,但实际处理文件位于public/actions/login.php。你需要将action路径修改为以下两种方式之一:
- 相对路径(推荐,避免服务器根目录配置差异):
<form method="post" action="actions/login.php"> - 绝对路径(仅当服务器DocumentRoot为项目根目录时适用):
<form method="post" action="/public/actions/login.php">
处理403访问禁止问题
路径修正后出现403,通常是权限或服务器配置限制导致,按以下步骤排查:
- 调整文件和目录权限
- 将
public/actions目录权限设置为755(所有者可读写执行,组和其他可读执行) - 将
public/actions/login.php文件权限设置为644(所有者可读写,组和其他可读) - 确保服务器运行用户(如Apache的
www-data、Nginx的nginx)对这些文件和目录拥有读取权限
- 将
- 排查服务器配置限制
- 检查项目根目录或
public目录下的.htaccess文件,确认是否存在限制actions目录访问的规则 - 核实服务器虚拟主机配置,确保允许执行
public/actions目录下的PHP文件
- 检查项目根目录或
额外代码bug修复
你的代码中还有两处易引发后续问题的错误:
- 命名空间不一致
public/login.php中使用use app\Hotel\User;,但public/actions/login.php中是use Hotel\User;,请统一命名空间,确保类能正确加载。 - Cookie过期时间逻辑错误
setcookie('user_token', $token, time() *60 * 60 * 24 * 30, '/');中的time() * ...会导致时间戳溢出,Cookie会立即过期,应修改为:setcookie('user_token', $token, time() + 60 * 60 * 24 * 30, '/');
内容的提问来源于stack exchange,提问作者Blueteo Ta
相关产品推荐
相关产品推荐

