在webman中上传大文件,即便没有超过config('server.max_package_size')规定的体积,也会强制close()掉connection,导致Apache代理返回502 Bad Gateway。
仔细检查了/vendor/workerman/webman-framework/src/support/App.php中Line 90的相关代码,确认了config应该是有生效的
TcpConnection::$defaultMaxPackageSize = $config['max_package_size'] ?? 10 * 1024 * 1024;
php.ini的相关设置也确认过没问题
post_max_size = 1024M
upload_max_filesize = 512M
memory_limit = 1024M
config/server.php
return [
'name' => 'HolosNexus S1',
'event_loop' => '',
'stop_timeout' => 2,
'pid_file' => runtime_path() . '/webman.pid',
'status_file' => runtime_path() . '/webman.status',
'stdout_file' => runtime_path() . '/logs/stdout.log',
'log_file' => runtime_path() . '/logs/workerman.log',
'max_package_size' => 512 * 1024 * 1024,
'root_dir' => '/data2/www/com.holosnexus/s1'
];
上传的文件241M
composer.json
"require": {
"php": ">=8.1",
"workerman/webman-framework": "^2.1",
"monolog/monolog": "^2.0",
"workerman/crontab": "^1.0",
"illuminate/database": "^12.35",
"webman/database": "^2.1",
"symfony/var-dumper": "^7.3",
"illuminate/events": "^12.35",
"webman/action-hook": "^1.0",
"illuminate/redis": "^12.35",
"tencentcloud/sms": "^3.0",
"tencentcloud/ims": "^3.0",
"tencentcloud/tms": "^3.0",
"tencentcloud/ocr": "^3.0",
"intervention/image": "^3.11",
"endroid/qr-code": "^6.0",
"webman/cache": "^2.1",
"wechatpay/wechatpay": "^1.4",
"wechatpay/wechatpay-guzzle-middleware": "^0.2.2",
"guzzlehttp/guzzle": "^7.10",
"php-ffmpeg/php-ffmpeg": "^1.3"
}