限制 POST 个请求,最大 65KB 图片

Limit on POST request, 65KB image max

情况

我正在尝试通过 POST 请求将图像加载到 php 脚本中。

问题

post 操作仅在图像小于 65.151 和 65.686 字节之间的大小时有效。 (我还没有弄清楚它将接受的字节的确切限制是多少,我只知道 65.151 字节有效,但 65.686 字节和以上都无效。)

症状

当我尝试上传超过上述限制的图像时,网页会挂起。当我在浏览器中监控网络时,它显示 POST 请求具有(待定)状态。请求的 body 包含带有图像字段的表单。缺少响应 header。

当我上传不超过限制的图片时,它会显示正确的状态和响应 header 并打印出包含正确尺寸图片的数组等..

php没有报告错误。

环境

我 运行 在我的 windows 7 笔记本电脑上本地化所有内容。 我有一个单独安装的 windows php 5.6.8 引擎。 我正在使用 Phpstorm 开发和 运行 应用程序(它使用上面描述的 php 引擎)。 我正在使用 chrome 和 IE 进行测试和故障排除。

设置

我在 php.ini 中修改了很多设置:

当前设置:

代码

我尝试了很多不同的方法,但目前我正在使用以下代码:

test-file-upload.html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form action="uploadImage.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>

uploadImage.php

<?php
print_r($_FILES);
?>

目录结构

有谁body可以解释一下为什么会这样吗?

更新 2015/07/07

我决定采用不同的方法来绕过这个问题: 首先,我尝试使用不同的开发工具来 运行 脚本。 我使用了 Netbeans 和 Visual studio,但它们使用了与 php storm 使用的相同的 php 引擎安装。在 VS 和 netbeans 上,它都无法启动网页,我认为这是由于集成网络服务器未正确配置引起的。我不想浪费更多时间来隔离问题,所以我在另一台笔记本电脑上安装了 webmatrix 以获得全新的开发环境。 Webmatrix 将该项目检测为 php 项目并安装了一个新的 php 引擎(5.5 左右)。通过使用 webmatrix 自身捆绑的 iis express 网络服务器,我能够启动脚本并且 65KB+ 的限制消失了!

所以在这之后我可以得出结论,代码不是问题,而是开发环境。我不知道究竟是什么导致了这个问题,可能是集成在 phpstorm 中的网络服务器导致了这个问题,或者是 php 引擎。如果有人有想法,我可以对其进行测试以找到合适的解决方案。同时,我对 webmatrix 很满意。

更新 2015/07/10

使用 Webmatrix 及其内置的 IIS 网络服务器,一切仍然正常。但我仍然想找出 phpstorm 的 65KB+ 限制背后的问题。经过一些研究,我了解到 Phpstorm 使用 PHP 解释器的内置网络服务器,这将问题指向了那个。然后我遇到了一个 Whosebug post,它描述了我遇到的同样问题。他们的上传脚本在其他网络服务器上也 运行 没问题,但在 php 内置网络服务器上却不行。所以我几乎可以肯定导致的因素是 PHP 内置网络服务器。

如果有人知道此问题的解决方法,请在此处 post。我会post一个link到另一个线程的解决方案。