如何在我的 Elastic Beanstalk 环境中上传大于 2MB 的 WordPress 文件?

上次更新时间:2020 年 6 月 22 日

当我尝试在我的 AWS Elastic Beanstalk 环境中上传大于 2MB 的 WordPress 文件时,我收到以下错误消息“上传的文件超出 php.ini 中的 upload_max_filesize 指令。” 如何解决此错误?

简短描述

Amazon Elastic Compute Cloud (Amazon EC2) 实例上的默认 PHP 配置不允许您上传大于 2MB 的 WordPress 文件。要上传大于 2 MB 的文件,请更改 /etc/php.ini 文件中 upload_max_filesize 参数的默认值。

重要提示:M 和 MB 都是兆字节的有效表达。例如,2M 等于 2 MB。但是,在您的配置文件中,仅使用 M,因为 MB 在配置文件中无效。

解决方法

选择适用于您的解决方案堆栈的解决方法。

为运行 PHP 解决方案堆栈的 Elastic Beanstalk 环境更新上传文件大小

要增加各个实例的文件大小,请完成以下步骤来更新底层 Amazon 系统映像 (AMI)。

1.    在代码编辑器中,创建一个名为 change_upload_size.config 的新文件,然后将以下代码添加到该文件:

files:
    "/etc/php.d/99uploadsize.ini":
        mode: "000644"
        owner: root
        group: root
        content: |
            upload_max_filesize = 100M
            post_max_size = 100M
commands:
    remove_old_ini:
        command: "rm -f /etc/php.d/99uploadsize.ini.bak"

注意:在前面的示例中,post_max_size 参数的值从默认值 32M 更新为 100M

提示:要修改 memory_limitphp.ini 参数,请参阅适用于 post_max_sizephp.ini 指令。Elastic Beanstalk 中的最大 memory_limit 值为 256M

2.    在应用程序源捆绑包的根目录中,创建一个称为 .ebextensions 的新目录,然后将 change_upload_size.config 文件移动到 .ebextensions 目录中。

如果 .ebextensions 目录已经存在于您的应用程序源捆绑包内,则将 .ebextensions 目录中的 change_upload_size.config 文件与其他 .config 文件一起保留。该目录结构应类似于以下示例:

├── wp-site.zip/ 
    ├── .ebextensions/
         ├── change_upload_size.config
    ├── wp-content/
    ├── wp-includes/
    ├── wp-admin/
    ├── LICENSE
    ├── README.md
    ├── index.php
    ├── license.txt
    ├── readme.html
    ├── ...
    ├── ...
    ├── ...
    ├── ...
    ├── wp-settings.php
    ├── wp-signup.php
    ├── wp-trackback.php
    └── xmlrpc.php

3.    打开 Elastic Beanstalk 控制台,然后为您的应用程序源捆绑包创建一个压缩存档。

4.    要将您的代码上传到现有 Elastic Beanstalk 环境,请选择您的环境,然后再选择上传和部署

注意:要将您的代码部署到新的 Elastic Beanstalk 环境中,请参阅创建 Elastic Beanstalk 环境

如果您上传 .ebextensions 文件后仍存在错误消息,请使用 YAML 验证器检查代码中是否存在空格错误。另外,考虑使用 remove_old_ini 命令删除不必要的备份文件。有关更多信息,请参阅扩展 php.ini

为运行 LAMP 堆栈的单个 Amazon EC2 实例更改上传文件大小

1.    要使用 vi 编辑器打开 /etc/php.ini 文件,请运行以下命令:

$ sudo vi /etc/php.ini

注意:/etc/php.ini 文件名或路径可能根据您的 PHP 版本或您使用的 AMI 而不同。

2.    在 vi 编辑器中,将 upload_max_filesize 参数的值更改为比 2 MB 大的大小,然后保存文件。

提示:要修改 memory_limitphp.ini 参数,请参阅适用于 post_max_sizephp.ini 指令。有关更多信息,请参阅 PHP 网站上的 post_max_size 条目。

3.    要从容地重启 Apache 服务器,请为您的环境运行适当的命令。

对于 Amazon Linux:

$ sudo service httpd graceful

对于 Amazon Linux 2:

$ sudo service httpd reload

注意:/etc/php.ini 文件名或路径可能根据您的 PHP 版本或您使用的 AMI 而不同。如果您使用 Amazon Linux AMI 以外的分发,重启 Apache 服务器的命令可能也会不同。默认情况下,WordPress 会限制其 PHP 进程的内存。