Azure Linux WebApp上Laravel生产环境请求数据被截断,开发环境无此问题的排查求助
Azure Linux WebApp上Laravel生产环境请求数据被截断,开发环境无此问题的排查求助
各位大佬好,我遇到了一个非常诡异的问题,想请大家帮忙分析排查:
我在Azure上搭建了两个Linux环境的Web App,分别是开发(dev)和生产(prod)环境,两者的配置、环境变量等完全一致,后端都是基于Laravel 10开发的。
最近在前端向后端发送大表单请求时,发现生产环境的请求数据会被截断,但开发环境完全复现不了这个问题。具体情况如下:
- 前端请求情况:我用AJAX发送请求,在发送前特意通过
console.log打印了完整的请求数据,浏览器控制台显示的是完整的、没有问题的内容。AJAX代码如下:
console.log('order data: ' + JSON.stringify(newOrder)); console.log('url: ' + promiseUrl); promise = $.ajax({ _token: token, method: 'POST', type: 'POST', url: promiseUrl, data: newOrder, dataType: 'json' })
- 后端请求验证层:请求会先经过一个空的Laravel Form Request类,这个类里的授权逻辑直接返回
true,没有做任何验证规则限制,代码如下:
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class UpdateOrderRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array<string, mixed> */ public function rules() { return [ // ]; } }
- 控制器接收情况:在控制器的处理方法最开头,我就把请求的所有数据打印到了日志里,代码如下:
public function update(UpdateOrderRequest $request){ $validated = $request->all(); Log::channel('order')->info('Order data:'); Log::channel('order')->info($validated); }
但日志里的请求数据到大约42000个字符、1620行就被截断了;而在开发环境中,哪怕是30kB左右、48000个字符、1640行的数据都能完整接收,完全不会出现截断的情况。
我实在搞不明白两个环境到底哪里存在差异?按常理来说,IIS的请求数据上限是28MB,PHP哪怕是默认的2MB上限,处理25-30KB的数据也完全没有问题啊?我已经尝试修改了upload_max_filesize和max_post_size这两个PHP配置,但问题依然没有解决。
有没有大佬遇到过类似的问题,或者能给我一些排查方向?
备注:内容来源于stack exchange,提问作者Bartosz
相关产品推荐
相关产品推荐

