You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下PHP 5.6上传超64MB无POST变量问题求助

LAMP栈(PHP 5.6)大文件上传异常问题排查思路

问题描述

Linux服务器上的LAMP栈(PHP 5.6)中,已将上传相关配置设为150MB,但64MB以下文件可正常上传,64MB以上文件无法处理:

  • 上传8MB文件时,脚本在文件上传完成后执行,符合预期;
  • 将upload_max_filesize设为4MB时,脚本同样在上传后执行,$_FILES数组返回错误,符合预期;
  • 上传64MB以上文件时,脚本立即执行,但无POST信息传入,也无错误返回;浏览器需等文件上传完成后才显示脚本页面,/tmp目录未生成临时文件,文件仿佛上传到“虚空”。

请求头信息

Content-Type : multipart/form-data; boundary=---------------------------313526204030269522582777911024
Content-Length : 73273125

当前php.ini配置

memory_limit = 256M
post_max_size = 150M
upload_max_filesize = 150M
max_execution_time = 300
max_input_time = 1000

Apache超时时间已设为300秒,排除超时问题,核心现象是脚本被提前触发但无数据传入。

解决思路

  • 检查Apache LimitRequestBody配置
    该参数控制Apache允许的请求体最大大小,默认值为0(无限制),若被设置为67108864(64MB),会直接截断超过此大小的请求,导致PHP无法接收数据。需在Apache配置文件(httpd.conf或虚拟主机配置)中设置:

    LimitRequestBody 157286400  # 对应150MB,或设为0表示无限制
    

    修改后重启Apache生效。

  • 排查mod_security模块限制
    若启用了mod_security,其SecRequestBodyLimit和SecRequestBodyNoFilesLimit参数可能限制了请求体大小。检查mod_security配置文件,确保这两个参数值大于150MB,例如:

    SecRequestBodyLimit 157286400
    SecRequestBodyNoFilesLimit 157286400
    

    调整后重启Apache。

  • 确认PHP-FPM配置一致性(若使用PHP-FPM)
    若采用PHP-FPM部署,需确保FPM对应的php.ini文件中post_max_size、upload_max_filesize配置与CLI版一致,同时检查:

    • upload_tmp_dir是否指向有权限的目录(如/tmp,确保Apache/PHP-FPM进程有读写权限);
    • request_terminate_timeout是否设置合理,避免请求被提前终止;
      修改后重启PHP-FPM服务。
  • 检查文件系统临时目录权限
    确认/tmp目录权限为777,或确保运行PHP的进程(如apache、www-data用户)拥有该目录的读写权限。可执行命令:

    chmod 777 /tmp
    chown apache:apache /tmp  # 若进程用户为apache
    
  • 测试绕过Apache环境
    临时启动PHP内置服务器:

    php -S 0.0.0.0:8080
    

    直接通过该端口上传大文件,若能正常处理,说明问题根源在Apache配置而非PHP本身。

  • 抓包分析请求完整性
    使用tcpdump抓包验证客户端是否发送了完整的请求数据:

    tcpdump -i any port 80 -w upload_cap.pcap
    

    用Wireshark分析抓包文件,检查请求的Content-Length是否与实际传输的字节数一致,排查传输过程中是否存在中断或截断。

内容的提问来源于stack exchange,提问作者jmarcv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:55:27