场合
我正在尝试通过POST请求将图像加载到php脚本中。
问题
仅当图像小于65.151和65.686字节之间的大小时,后置操作才有效。 (我还没弄清楚它接受的字节的确切限制是什么,我只知道65.151字节可以工作,但是65.686字节,以上都没有。)
症状
当我尝试上传超出上述限制的图片时,网页会挂起。当我在浏览器中监视网络时,它显示具有(挂起)状态的POST请求。请求正文包含带有图像字段的表单。缺少响应标头。
当我上传不超过限制的图像时,它会显示正确的状态和响应标题,并打印出包含正确大小的图像的数组等。
php报告没有错误。
环境
我在Windows 7笔记本电脑上运行一切。 我有一个Windows php 5.6.8引擎,我单独安装。 我正在使用Phpstorm来开发和运行应用程序(它使用上面描述的php引擎)。 我正在使用chrome和IE进行测试和排除故障。
设置
我在php.ini中设置了以下设置:
的post_max_size
的upload_max_filesize
memory_limit的
当前设置:
post_max_size =“2048M”
upload_max_filesize =“2048M”
memory_limit = 128M
代码
我尝试了很多不同的方法,但目前我正在使用以下代码:
的测试文件-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);
?>
目录结构
controller(dir)
- &GT; test-file-upload.html(文件)
- &GT; uploadImage.php(file)
有人可以解释一下为什么会这样吗?
答案 0 :(得分:0)
更新2015/07/07
我决定采取不同的方法导致绕过这个问题: 首先,我尝试使用不同的开发工具来运行脚本。 我使用Netbeans和Visual studio,但他们使用了与php风暴相同的php引擎安装。它在VS和netbeans上都无法启动网页,但这是因为集成的网络服务器没有正确配置。我不想浪费更多时间隔离问题,所以我在另一台笔记本电脑上安装了webmatrix,以获得全新的开发环境。 Webmatrix将该项目检测为一个php项目并安装了一个新的php引擎(5.5个东西)。通过使用webmatrix自身捆绑的iis express webserver,我能够启动脚本并且65KB +限制消失了!
因此,毕竟我可以得出结论,代码不是问题,而是开发环境。我不知道导致问题的是什么,它可能是集成在导致问题的phpstorm的网络服务器,或者是php引擎。如果有人作为一个想法我可以测试它找到一个propper解决方案。与此同时,我对webmatrix很满意。
更新2015/07/10
使用Webmatrix及其内置的IIS网络服务器,一切仍然正常。但我还是想弄清楚phpstorm的65KB +限制背后的问题。经过一些研究,我了解到Phpstorm使用PHP解释器的内置Web服务器,它将问题指向了这个问题。然后我遇到了一个stackoverflow post,它描述了我遇到的同样问题。他们的上传脚本也可以在其他网络服务器上正常运行,但不能在php内置网络服务器上运行。所以我几乎可以肯定,导致因素是PHP内置网络服务器。
如果有人知道此问题的解决方法,请在此处发布。我将在另一个帖子上发布解决方案的链接。