【问题标题】:PHP file upload - out of memoryPHP文件上传 - 内存不足
【发布时间】:2016-05-27 02:23:10
【问题描述】:

我有一个 Symfony 应用程序,它使用 Sonata 管理员和我的客户用来上传 mp4 视频的 Sonata 媒体。问题是这些文件越来越大(> 1go),我现在遇到了“内存不足”的 apache 错误。

该网站托管在 AWS EC2 ubuntu 实例(PHP、Apache2)上。 我这样设置php.ini 参数:

upload_max_filesize = 1G
post_max_size = 2G
memory_limit = -1

我为 /etc/php/7.0/ 下的 cli 和 apache2 做了这个。我尝试了各种组合和更高的值。之后总是重新启动apache。我什至尝试重新启动实例。我无法上传超过 350 个月的视频。

【问题讨论】:

    标签: php apache amazon-ec2


    【解决方案1】:

    您确定正确的语法吗?我认为它是像

    这样的字节

    1000 字节 = 1Mo 所以只写不带“G”、“Mb”等的数字。 但我不确定尝试并返回响应:)

    【讨论】:

    • 我将 1G 更改为 1000M 并重启了实例。不会改变任何东西。
    【解决方案2】:

    好的,我找到了解决方案。以下是我的做法。

    首先,我停止了我的 EC2 实例,分离了卷并对其进行了快照。

    从快照中,我创建了一个更大的卷(现在是 30Go)。我将它重新附加到我重启的 EC2 实例。

    我通过 SSH 登录并安装了一个交换空间 (3Go)。在this 之后对其进行了一些调整。

    我清理了缓存,最后一次重新启动了我的 EC2 实例,然后……我刚刚在 20 分钟内上传了 1Go。

    但有一个问题:停止和启动我的 EC2 实例我丢失了我的 IP 并且不得不更改我的 DNS 区域。网站需要几个小时才能恢复...

    希望这对某人有所帮助。

    【讨论】:

      【解决方案3】:

      你能否检查你在项目根目录下的.htaccess文件,或者确保在Symfony项目文件中,大小不受PHP函数限制,这将覆盖php.ini属性。

      【讨论】:

      • 我的 .htaccess 文件来了:# Expires is set to a point we won't reach, # Cache control will trigger first, 10 days after access # 10 Days = 60s x 60m x 24hrs x 10days = 864,000 <FilesMatch "\.(webm|ogg|mp4)$"> Header set Expires "Mon, 27 Mar 2038 13:33:37 GMT" Header set Cache-Control "max-age=864000" </FilesMatch> AddType video/webm .webm
      • 好像没问题。检查项目中的配置 php 文件
      • 据我所知,在我的 config.yml 中没有类似的东西。
      【解决方案4】:

      编辑您的 php.ini 文件 upload_max_filesize = 100000

      因为如果您写入 1G,它不会计算 1 GB,所以您必须声明 1048576 以限制 1 GB 的上传

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多