问题
当上传的8MB左右或以上的文件,我收到一个500内部服务器错误。
- 在所有PHP设置
php.ini
是正确的 -
maxAllowedContentLength
已在web.config中设置
服务器信息
正如人们或许可以从告诉maxAllowedContentLength
,我运行IIS 7.5,用的FastCGI和PHP 5.3.17
附加信息
我已经尝试了很多不同的东西来得到这个工作,但根本无法找到问题。
然而,我发现信息,可以帮助找出此问题的根源的下列位:
- 上传时使用媒体文件,维基(较大的),我在服务器上,我收到了同样的错误,这正好表明它是不是在我的代码中的错误。
- 更重要的是 -我设法在上传的Plesk文件管理器的文件18MB,这显然表示Plesk是能够得到解决此问题的配置。 我曾尝试所有的Plesk控制面板设置在该域在IIS中复制,但是这似乎并没有工作。
- 在脚本执行之前被返回的错误,因为我已经试着写
exit;
在顶部,试图得到一个空白的屏幕,但这个被忽略并返回500错误。
我认为,问题在于在内部configure command
的PHP配置的一部分 ,因为当我改变的处理程序映射.php
文件使用的Plesk php-cgi.exe
而不是通常的一个,我没有得到500内部错误。 话虽如此,我不能把它留在这个PHP版本,因为它的Plesk自己的exe
,并有其他的配置问题。
为什么我认为它可能与configure命令来这样做的原因,很简单,因为这从一个巨大的不同phpinfo()
其他。
如果您有任何意见或建议,请张贴。 我想尽一切办法我的知识和似乎无法修复这个问题。 如果仅仅是Linux的...
提前致谢
更新1
忘了补充,有没有在PHP错误日志中返回的错误。 至于IIS的错误,我不知道去哪里找
更新2
这是我已经放在我web.config
文件中:
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
更新3
有了您的帮助,我们已经设法通过IIS显示的错误。 这是我收到:
PHP警告:12221448个字节POST内容长度超过在线0的在未知8388608个字节的限制
那是做post_max_size
?
更新4
PHP设置如下(从phpinfo()
):
post_max_size = 64M memory_limit = 128M max_file_uploads = 20 max_execution_time = 6000 upload_max_filesize = 64M
更新5
最后,以防万一任何人都可以发现任何潜在的问题之外,Plesk能够上传大文件精绝,所以我认为他们的名为php-cgi.exe是不同的编译。 当我看到其配置的phpinfo()函数的configure command
信息是非常不同的:
我的配置:
CSCRIPT / NOLOGO configure.js “--enable-快照生成”, “ - 禁用ISAPI” “--enable-调试包” “--without-MSSQL” “--without-PDO-MSSQL”“ - 而不-Pi3Web服务器”, “--with-PDO-OCI = C:\ PHP-SDK \ ORACLE \ instantclient10 \ SDK,共享”, “--with-OCI8 = C:\ PHP-SDK \ ORACLE \ instantclient10 \ SDK,共享” “--with-oci8-11g = C:\ PHP-SDK \ ORACLE \ instantclient11 \ SDK,共享”, “--enable对象-OUT-DIR = .. / OBJ /”“--enable-COM-DOTNET =共享”, “--with-mcrypt的=静态” “ - 禁用静态分析”
Plesk的配置:
CSCRIPT / NOLOGO configure.js “--enable-调试包” “--enable-(CLI)” “--enable-CGI” “--enable-ISAPI” “--enable-一次性”“--enable- PDO “ ”--enable-国际机场“, ”--with-OpenSSL的共享=“ ”--with-PDO-ODBC“ ”--with-的iconv“ ”--with-XML“ ”--with-XSL“” - -with-MySQL的 “ ”--with-mysqlnd“ ”--with-mysqli的“ ”--with-PDO-源码“, ”--with-PDO-MySQL的“, ”--with卷曲=共享“” --enable -mbstring” “--enable-mbregex” “--with-IMAP =共享”, “--enable-套接字” “--enable-shmop” “--enable皂”
UPDATE(ANSWER)这是因为极其怪异phpinfo()
信息是说一个事情,但它显然是被忽略了,不知道为什么。
如果我改变post_max_size
Plesk中,对于特定的域/子域名,再没有什么改变(虽然它出现在已经改变phpinfo()
但是,如果我真的改变post_max_value
在php.ini那么这个修复该问题。
之所以这样,是不是解决这个问题的好办法,很简单,因为Plesk更新时,在php.ini覆盖为PHP已更新并且最终以丢失php.ini中所做的更改。 这意味着每次Plesk更新我需要TOT他php.ini中进行更改。 这就是为什么Plesk中提供更改PHP设置无需改变在php.ini的能力。
任何人都可以想到,为什么PHP是忽略了当地的价值,并在php.ini恢复到值,即使php.ini中指出,当地的价值是不同的?