首页 > 解决方案 > 发布大数据时我的 PHP 文件未执行

问题描述

我有一个接收由 jQuery Ajax 发布的 JSON 数据的 PHP 文件。客户端代码正在构建一个 json,然后使用 ajax 将其发布到我的 PHP 文件中。

一切都按预期工作,但我注意到当 JSON 文件超过 8 或 9 MB 时,PHP 文件根本不会被触发,即使客户端和服务器端都在本地主机上(“无网络时间”)。

这是 PHP 脚本

<?php
die('weee');

我有这些设置

post_max_size is "256M"
memory_limit is "32M"
upload_max_filesize is "256M"
max_input_time is "60"
max_execution_time is "30"

当请求很小时,服务器会按预期响应,“weee”带有这些标头

HTTP/1.1 200 OK
Date: Sun, 25 Apr 2021 16:59:27 GMT
Server: Apache
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

当 JSON 很大时,服务器不会返回“weee”而是一个空白页面,即使我的设置显示每个错误和警告并返回这些标头

HTTP/1.1 200 OK
Date: Sun, 25 Apr 2021 16:59:32 GMT
Server: Apache
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/x-httpd-php

我还注意到,当我尝试在 brwoser 网络选项卡中检查请求时,它仅在大请求时显示红色“请求已被截断”

浏览器控制台不记录任何内容。PHP 使用 API FPM/FastCGI 在我的服务器上工作,我无法再调试此问题,而且我对 Apache 没有太多经验,我需要检查哪些设置?

编辑:我通过Content-Type: multipart/form-data使用此方法发送带有标头的请求来解决问题。现在,在请求中发送大型 JSON 数据时,Apache 会正常触发我的 PHP 文件

我仍然不知道如何在我的 Apache 上为正常application/x-www-form-urlencoded请求允许更多的发布请求大小,但是我现在会坚持使用这个解决方案。

我将把这个问题作为参考,如果存在其他解决方案。

标签: phpapache

解决方案


推荐阅读