当我将大于 2 MB 的 WordPress 文件上传到我的 AWS Elastic Beanstalk 环境时,我收到以下错误消息: "The uploaded file exceeds the upload_max_filesize directive in php.ini."
简短描述
Amazon Elastic Compute Cloud(Amazon EC2)实例上的默认 PHP 配置不允许您上传大于 2 MB 的 WordPress 文件。要上传大于 2 MB 的文件,请更改 /etc/php.ini 文件中 upload_max_filesize 参数的默认值。
重要事项: M 和 MB 都表示“兆字节”。例如,2 M 就是 2 MB。这是因为 MB 在配置文件中无效,所以只能使用 M。
解决方法
选择适用于您的解决方案堆栈的解决方案。
修改运行 PHP 解决方案堆栈的 Elastic Beanstalk 环境的上传文件大小
要增加所有实例的文件大小,请更新您使用的亚马逊机器映像(AMI)。
完成以下步骤:
- 在代码编辑器中,创建一个名为 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 参数的值从默认的 32 M 更新为 100 M。
要修改 php.ini 参数,例如 memory_limit,请参阅 php.ini 指令 post_max_size。Elastic Beanstalk 中的最大 memory_limit 值为 256 M。
- 在应用程序源包的根目录中,创建一个名为 .ebextensions 的新目录,然后将 change_upload_size.config 文件移动到 .ebextensions 目录。如果您的应用程序源包中已经有 .ebextensions 目录,则将 change_upload_size.config 文件与其他 .config 文件一起保留在 .ebextensions 目录中。
示例:
├── 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
**重要事项:**对于基于 Elastic Beanstalk 的 Amazon Linux 2 平台,请将文件名 99uploadsize.ini 更改为 z99uploadsize.ini。要允许新的 PHP 设置覆盖默认设置,请更改 .ebextension 中所有的文件名。
- 打开 Elastic Beanstalk 控制台,然后创建应用程序源包的 zip 存档。
- 要将您的代码上传到现有的 Elastic Beanstalk 环境,请选择您的环境,然后选择上传和部署。
**注意:**要在新的 Elastic Beanstalk 环境中部署代码,请参阅创建 Elastic Beanstalk 环境。
上传 .ebextensions 文件后,如果错误消息仍然存在,请使用 YAML 验证器检查代码中是否存在空白错误。另外,运行 remove_old_ini 命令删除无用的备份文件。有关更多信息,请参阅扩展 php.ini。
更改运行 LAMP 堆栈的单个实例的上传文件大小
完成以下步骤:
- 要使用 vi 编辑器打开 /etc/php.ini 文件,请运行以下命令:
$ sudo vi /etc/php.ini
注意:****/etc/php.ini 文件名或路径可能会有所不同,具体取决于您的 PHP 版本或您使用的 AMI。
- 在 vi 编辑器中,将 upload_max_filesize 参数的值改为大于 2 MB,然后保存该文件。
**注意:**要修改 php.ini 参数,例如 memory_limit,请参阅 php.ini 指令 post_max_size。有关更多信息,请参阅 PHP 网站上的 post_max_size。
- 要正常重启 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 进程的内存。
相关信息
使用配置文件(.ebextensions)进行高级环境自定义
将带有外部 Amazon Relational Database Service(Amazon RDS)数据库的高可用性 WordPress 网站部署到 Elastic Beanstalk
在 Amazon Linux 2 上托管 WordPress 博客
PHP 网站上 php.ini 核心指令说明