如何在PHP中不解析配置文件安全读取Nginx client_max_body_size值
问题结论
无法在不解析Nginx配置、也不额外修改Nginx配置的前提下,从PHP脚本层面安全读取到client_max_body_size的配置值
原因说明
client_max_body_size属于Nginx服务内核层面的配置,默认不会透传到PHP运行环境中:- PHP的
$_SERVER等全局变量默认不包含该配置信息,除非你主动在Nginx的server块中新增fastcgi_param CLIENT_MAX_BODY_SIZE $client_max_body_size;规则,手动把该配置值传递给PHP-FPM,这种情况下你才能在PHP中通过$_SERVER['CLIENT_MAX_BODY_SIZE']读取到对应值,这已经属于修改Nginx配置的范畴,不符合前提要求。
- PHP的
- PHP自身可读取的
upload_max_filesize、post_max_size运行时配置,和Nginx的client_max_body_size是完全独立的两套限制规则,二者没有绑定关系,无法通过读取PHP配置间接推断Nginx的配置值。 - 网传的通过发送大请求试探413状态码的方式完全不可靠:你无法区分返回的413状态码是Nginx触发的还是PHP应用层触发的,且试探请求会产生无效大流量,生产环境不可用。
内容的提问来源于stack exchange,提问作者Sfisioza
相关产品推荐
相关产品推荐

