【问题标题】:Unable to change upload_max_filesize to Azure无法将 upload_max_filesize 更改为 Azure
【发布时间】:2016-04-08 06:27:43
【问题描述】:

我有一个 Laravel Azure 网站。

我有一个.user.ini 文件,其中有一些设置,例如

upload_max_filesize=120M
post_max_size=121M
output_buffering=Off
max_execution_time=3000
max_input_time=3000
memory_limit=140M

但是,奇怪的是,只有max_execution_timememory_limit changed。我也试过ini_set(),但结果相同。

有解决办法吗?

【问题讨论】:

  • 您在更改这些设置后是否重新启动了服务器?我对 Azure 不熟悉,但我习惯于在进行 .ini 更改后重新启动 Apache,这样它就会启动并生效。此外,根据this answer,您不能在脚本执行期间更改upload_max_filesize
  • 我重启了服务器,但没有成功

标签: php laravel azure


【解决方案1】:

由于 Azure 上的 PHP 应用程序实际上托管在 IIS 上,因此限制上传文件大小不仅受 PHP 设置控制,还受 IIS 配置控制。

默认情况下,请求中内容的最大长度在 IIS 中设置为 30000000,约为 28.6MB。详情可参考https://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits#005

除了PHP的自定义配置外,你还需要在你的根目录下创建一个web.config,其内容可以是如下样例:

<configuration>

    <appSettings/>
    <connectionStrings/>
    <system.web>
        <httpRuntime maxRequestLength="1073741824" />
    </system.web>
    <system.webServer>
    <security>
      <requestFiltering>
        <!-- maxAllowedContentLength is in bytes (B)  -->
        <requestLimits maxAllowedContentLength="1073741824"/>
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

【讨论】:

  • 我试过这个,但我上传大文件的测试没有任何变化。
  • 你上传的文件有多大?
  • 它适用于 30MB 以下的文件。超过 30MB 会出错。此限制不考虑 PHP INI 设置。
  • 似乎在 IIS 中配置失败。 web.config文件应该放在你app的根目录下,也就是D:\home\site\wwwroot,创建文件后,你重启网站了吗?此外,您可以参考azure.microsoft.com/en-us/blog/… 并利用 IIS 管理器来配置 IIS 设置。
  • 我在这篇文章的帮助下设法更改了设置:blogs.msdn.com/b/hosamshobak/archive/2015/03/20/…。基本上我在设置 PHP_INI_SCAN_DIR 中添加了 .user.ini 的文件夹路径值
【解决方案2】:

基本上我在设置 PHP_INI_SCAN_DIR 中添加了 .user.ini 的文件夹路径值

【讨论】:

    【解决方案3】:
    1. 转到 Azure 设置->配置

    2. 在“应用程序设置”下,点击“新建应用程序设置”添加以下内容:

      名称:PHP_INI_SCAN_DIR

      值:(无论路径,例如 d:\home\site\ini)

    3. 打开powershell,进入开发工具->高级工具,点击'Go ->'

    4. 打开您在 #2 上指定的路径上的文件夹(例如 'd:\home\site\ini')。然后创建.user.ini文件

    5. 添加以下内容:

      upload_max_filesize = 64M

      post_max_size = 64M

    6. 重启你的服务器

    您可以使用以下方法检查服务器上的值:

    php -r "echo ini_get('upload_max_filesize');"

    php -r "echo ini_get('post_max_size');"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      • 2012-10-27
      • 2010-11-10
      • 2022-08-03
      • 1970-01-01
      相关资源
      最近更新 更多