首先对另一个相同的问题感到抱歉(我知道这个问题的无数次迭代),但我完全被这个问题所困扰,整天都在寻找答案(以及在这里检查所有以前的线程)。
所以我试图通过 PHP 上传大(ish)文件。该脚本在 8-10Mb 标记左右的文件处失败(适用于高达 7.5Mb 的文件,在 10Mb 处失败)。它只返回一个空文件数组,即:
print_r($_FILES)
= array( )
我在 Windows 2008 R2 操作系统上使用 Plesk 10 运行 IIS7。这是我的表格:
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="200000000">
<input name="Filedata" type="file" />
<input type="submit" value="Upload File" class="button" />
</form>
一些相关的 php.ini 变量:
max_execution_time: 240
max_input_time: 360
post_max_size: 1600M
upload_max_filesize: 800M
memory_limit 1600M
我的 web.config 有这个:
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="200000000"/>
</requestFiltering>
</security>
我知道正在收听 php.ini,因为 php_info() 将它们报告为(也 ini_get('...') 也将它们报告为正确的。顺便说一下,它们是“本地”值,“主人的要低得多(但我假设如果 php_info() 报告本地的,那么它们就是正在使用的)。我在我的脚本中放入了一些调试代码:
echo ini_get('post_max_size') . "<br />";
echo ini_get('upload_max_filesize') . "<br />";
echo $_SERVER['CONTENT_LENGTH'] . "<br />";
这呼应了:
1600M
800M
10424520
最后一个是以字节为单位的 10Mb(ish)文件大小(我假设)。所以我的问题是,我在这里缺少什么?