0

首先对另一个相同的问题感到抱歉(我知道这个问题的无数次迭代),但我完全被这个问题所困扰,整天都在寻找答案(以及在这里检查所有以前的线程)。

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

4

1 回答 1

1

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

事实证明,虽然 Plesk 允许您覆盖“本地”php 设置,但实际上并没有监听更改,并且正在监听 php.ini 中的“主”值,而本地的则没有.

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

为了解决这个问题,我根据需要通过更改默认的 plesk php.ini 来更改主值。phpinfo() 报告我需要的 post_max_size 现在在本地和主服务器中都是 800M,它可以根据需要工作。

于 2013-02-13T00:45:15.850 回答