Laravel 5.5控制器Store方法部署到XAMPP后失效求助
兄弟,我看你遇到的问题很典型——本地用php artisan serve跑CRUD全正常,放到XAMPP上就唯独store方法失效,提交表单直接跳404。咱先理清楚为啥会这样,再一步步解决:
问题根源:路径适配错误
你本地用php artisan serve的时候,Laravel会把public文件夹作为服务器的根目录,所以表单里写的action="/example"会对应http://localhost:8000/example,刚好匹配你的路由。
但到了XAMPP这边,你的项目是放在project文件夹下的,访问页面的路径是http://localhost/project/public/example/create。这时候表单里的/example会直接指向http://localhost/example——这个路径根本不存在,自然就404了。
快速修复:用路由助手生成正确路径
别再硬写绝对路径了,Laravel给我们准备了路由助手,能自动适配不同环境的路径。把你的表单action改成这样:
<form action="{{ route('example.store') }}" method="post">
route('example.store')会根据你route:list里的命名路由,自动生成对应的正确URL——不管是本地serve还是XAMPP部署,都能精准匹配到store方法的路由。
额外排查点(如果修复后还是有问题)
- 检查Apache根目录配置:推荐把XAMPP中你的项目根目录直接指向
project/public,这样访问路径可以简化成http://localhost/project/,后续的路由跳转也更顺畅。 - 确认APP_URL配置:打开
config/app.php,把url项改成http://localhost/project/public,确保Laravel生成的所有URL都基于这个正确的根路径。 - 验证CSRF令牌:查看页面源代码,确认
{{ csrf_field() }}已经生成了隐藏的token输入框——没有这个的话,Laravel会拒绝POST请求,也可能导致异常。
测试验证
改完表单action后,重新提交试试,应该会正确跳转到http://localhost/project/public/example,触发store方法创建数据,然后成功跳转到详情页。
最后提醒下:以后写路由跳转、表单action这类路径,尽量用Laravel的route()或者url()助手,别手动硬写绝对路径,能避免很多环境适配的坑。
内容的提问来源于stack exchange,提问作者Jonio

