"上传大文件至Azure PHP网站的解决策略"
在尝试上传超过2MB的文件到Azure PHP网站时,可能会遇到失败的问题。这主要是由于PHP的默认配置限制了上传文件的最大大小为2MB。为了解决这个问题,我们需要对PHP和IIS服务器的配置进行调整。
首先,你需要在网站的根目录`sitewwwroot`下创建一个`.user.ini`文件。这个文件用于存放自定义的PHP配置。在`.user.ini`文件中,你可以设置`upload_max_filesize`和`post_max_size`这两个参数,它们分别决定了允许上传的最大文件大小和POST请求所能携带的数据总量。例如,如果你想允许上传最大40MB的文件,你可以这样写:
```ini
upload_max_filesize = 40M
post_max_size = 40M
```
为了确保配置生效,并能捕获任何可能出现的错误,你还可以开启PHP的日志记录。在`.user.ini`文件中添加以下行:
```ini
display_errors=on
log_errors=on
error_reporting=E_ALL
error_log=D:\home\site\wwwroot\php.log
file_uploads=on
```
这将打开错误显示,开启错误日志,并设置错误报告级别为所有错误。`file_uploads=on`确保文件上传功能被启用。
然而,即使PHP配置正确,如果上传的文件大小超过了IIS默认的请求体大小(28.6MB),仍会遇到问题。因此,还需要修改IIS的`web.config`文件。在`<system.webServer>`和`<system.web>`节点下,设置`maxAllowedContentLength`和`maxRequestLength`属性,以允许更大的内容长度。例如:
```xml
<configuration>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="300000000" />
</requestFiltering>
</security>
</system.webServer>
<system.web>
<httpRuntime maxRequestLength="300000000" appRequestQueueLimit="100" useFullyQualifiedRedirectUrl="true" executionTimeout="600" />
</system.web>
</configuration>
```
这里将最大内容长度设置为300MB(300000000字节)。记得根据实际需求调整这个数值。
完成上述配置后,推荐通过Azure管理门户重启网站以应用新的设置。可以参考以下链接获取更多详细信息:
1. [Windows Azure Web Sites - PHP站点上传文件大小限制](https://blogs.msdn.microsoft.com/kaushal/2014/01/01/windows-azure-web-sites-file-upload-limit-for-php-sites-hosted-on-waws/)
2. [IIS配置参考 - system.webServer/security/requestFiltering/requestLimits](https://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits#001)
通过这些步骤,你应该能够成功上传超过2MB的大文件到Azure PHP网站。请确保在操作过程中仔细检查并测试,以避免因配置错误导致的任何问题。