IIS部署Laravel WebAPI遇413请求实体过大错误求助
解决IIS部署Laravel WebAPI时的413 Request Entity Too Large错误
你已经调整了php.ini和IIS的uploadReadAheadSize,但仍遇到413错误,可能还有以下几个配置项需要检查:
检查IIS站点的请求筛选设置
打开IIS管理器,定位到你的WebAPI站点,找到「请求筛选」功能,点击右侧的「编辑功能设置」,在弹出的窗口中调整「最大允许内容长度(字节)」。60MB对应的字节数是62914560,可以设置为这个值或更大(比如70MB对应的73400320),保存后重启站点。确认Laravel内部的限制
检查项目中是否存在自定义中间件对请求大小做了校验,比如某些中间件可能会判断request()->getContentLength()并返回413错误。另外,虽然少见,但也可以确认app/Http/Middleware/VerifyCsrfToken.php没有额外的请求大小限制逻辑。验证FastCGI配置(若使用PHP FastCGI)
- 在IIS管理器中找到站点的「处理程序映射」,找到PHP对应的FastCGI处理项,右键选择「编辑」→「请求限制」,确保「允许的内容长度」没有设置过小的值。
- 也可以直接编辑
applicationHost.config文件,确保FastCGI的requestTimeout设置足够(比如300秒),避免因请求处理超时间接引发问题,示例配置:<system.webServer> <fastCgi> <application fullPath="C:\PHP\php-cgi.exe" requestTimeout="300"> <environmentVariables> <environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" /> </environmentVariables> </application> </fastCgi> </system.webServer>
确认php.ini修改是否生效
在项目根目录创建phpinfo.php文件,内容为:<?php phpinfo(); ?>访问该文件,查看
upload_max_filesize、post_max_size是否和你设置的一致。有时候会不小心修改了错误的php.ini文件(比如CLI版本和FastCGI版本的配置文件路径不同),这一步可以验证配置是否真正生效。检查服务器级别的请求筛选
除了站点级的设置,还要检查IIS服务器根节点的「请求筛选」设置,确保服务器级的「最大允许内容长度」没有覆盖站点的配置。
内容的提问来源于stack exchange,提问作者kreya
相关产品推荐
相关产品推荐

