Godaddy部署Laravel应用上传图片遇Request Entity Too Large问题求助
我之前在GoDaddy共享主机部署Laravel项目时,也碰到过完全一样的问题——小图上传正常,1MB的图就报错,折腾了好一阵才搞定,给你分享几个靠谱的排查方向:
检查ini文件的放置位置:GoDaddy的共享主机对
php.ini/user.ini的位置有要求,不是所有情况都放在public_html里就行。你可以试试把这两个文件移到public_html的上级目录(也就是存放public_html的那个主文件夹),然后等5-10分钟让服务器生效,或者去GoDaddy主机后台找到“重启PHP”的选项手动重启。验证PHP配置是否生效:在Laravel的
public目录里新建一个phpinfo.php文件,内容如下:<?php phpinfo(); ?>访问这个文件,搜索
upload_max_filesize、post_max_size这些参数,看看是不是你设置的256M/257M。如果还是默认的小数值,说明你的ini文件没被服务器读取到,就得换配置方式了。改用.htaccess配置:如果ini文件不管用,试试在Laravel项目的
public/.htaccess文件里添加这些Apache指令(如果public_html里的.htaccess是Laravel生成的,直接加在合适位置就行):php_value upload_max_filesize 256M php_value post_max_size 257M php_value max_input_time 300 php_value max_execution_time 300 php_value max_file_uploads 20很多GoDaddy主机对.htaccess的PHP参数支持更好,这个方法我亲测有效。
检查Laravel自身的验证规则:别漏了框架层面的限制!如果你在表单请求或者控制器里给图片字段加了
max:1024(代表1MB)的验证规则,哪怕服务器允许更大的上传,Laravel也会拦截。记得把验证规则改成对应256MB的数值(单位是KB,256*1024=262144),比如:// 示例:控制器里的验证逻辑 $request->validate([ 'images' => 'required|array|max:20', 'images.*' => 'image|mimes:jpeg,png,jpg,gif|max:262144', ]);查看GoDaddy后台的PHP可视化配置:有些GoDaddy主机在管理后台提供了PHP配置的可视化界面,你可以直接在后台调整上传大小、执行时间这些参数,比自己手动放ini文件更稳妥。找到“PHP版本”或者“PHP配置”的选项进去看看。
我当时就是把ini文件移到上级目录,再配合.htaccess的配置,就解决了问题。你可以一个个试,应该能搞定!
内容的提问来源于stack exchange,提问作者Mohamed Hussein

