PHP大文件上传(再次)

时间:2013-01-31 23:12:41

标签: iis-7 upload php large-files

首先抱歉另一个(我知道这个问题的无数次迭代),但是我完全被这个问题搞得一团糟,整天都在寻找答案(以及检查所有以前的线程)。

所以我试图通过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)文件大小(我假设)。所以我的问题是,我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

所以我终于在这里找到了答案,并认为它可能会对未来的某些灵魂有所帮助。

事实证明,Plesk,虽然允许你覆盖本地&#39; php设置,实际上并没有听取变化,并且&#39; Master&#39;正在监听php.ini中的值,本地的值不是。

这里有更多信息: PHP post_max_size local value overridden by master value on Plesk / IIS?

要解决这个问题,我根据需要通过更改默认的plesk php.ini来更改主值。 phpinfo()报告我所需的post_max_size现在在本地和主站都是800M,并且它可以根据需要运行。