首先抱歉另一个(我知道这个问题的无数次迭代),但是我完全被这个问题搞得一团糟,整天都在寻找答案(以及检查所有以前的线程)。
所以我试图通过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)文件大小(我假设)。所以我的问题是,我在这里缺少什么?
答案 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,并且它可以根据需要运行。