Cuando intento cargar archivos de WordPress de más de 2 MB en mi entorno de AWS Elastic Beanstalk, se muestra el siguiente mensaje de error: «The uploaded file exceeds the upload_max_filesize directive in php.ini».
Breve descripción
La configuración predeterminada de PHP en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) no permite cargar archivos de WordPress de más de 2 MB. Para cargar archivos de más de 2 MB, cambie el valor predeterminado del parámetro upload_max_filesize en el archivo /etc/php.ini.
Nota: M y MB son expresiones equivalentes para «megabyte». Por ejemplo, 2 M equivale a 2 MB. Sin embargo, utilice solo «M» en el archivo de configuración, ya que la abreviatura «MB» no es válida en un archivo de configuración.
Solución
Seleccione la solución aplicable a su pila de soluciones.
Actualización del tamaño del archivo de carga para un entorno de Elastic Beanstalk que ejecute una pila de soluciones de PHP
Para aumentar el tamaño del archivo en todas las instancias, siga estos pasos con el fin de actualizar la imagen de máquina de Amazon (AMI) subyacente.
-
En un editor de código, cree un archivo denominado change_upload_size.config y, a continuación, agregue el siguiente código al archivo:
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"
Nota: En el ejemplo anterior, el valor del parámetro post_max_size se ha actualizado del valor predeterminado, 32 M, a 100 M.
Para modificar los parámetros de php.ini, como memory_limit, consulte las directivas de php.ini en relación con post_max_size. El valor máximo, memory_limit, es de 256 M en Elastic Beanstalk.
-
En la raíz del paquete de código fuente de la aplicación, cree un nuevo directorio llamado .ebextensions y, a continuación, mueva el archivo change_upload_size.config al directorio .ebextensions.
Si el directorio .ebextensions ya está incluido en el paquete de código fuente de la aplicación, guarde el archivo change_upload_size.config en el directorio .ebextensions junto con los demás archivos .config.
Ejemplo:
├── 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
Nota: En el caso de las plataformas Amazon Linux 2 basadas en Elastic Beanstalk, cambie el nombre del archivo 99uploadsize.ini a z99uploadsize.ini. Para permitir que la nueva configuración de PHP anule los valores predeterminados, cambie el nombre del archivo en todas partes en el directorio .ebextension.
-
Abra la consola de Elastic Beanstalk y, a continuación, cree un archivo zip del paquete de código fuente de la aplicación.
-
Para cargar su código en un entorno de Elastic Beanstalk existente, seleccione su entorno y, a continuación, Cargar e implementar.
Nota: Para implementar su código en un nuevo entorno de Elastic Beanstalk, consulte Creación de un entorno de Elastic Beanstalk.
Si el mensaje de error no desaparece después de cargar el archivo .ebextensions, utilice un validador de YAML para comprobar si hay errores de espacios en blanco en el código. Además, puede utilizar el comando remove_old_ini para eliminar los archivos de copia de seguridad innecesarios. Para obtener más información, consulte Ampliación de php.ini en la configuración de Elastic Beanstalk.
Cambio del tamaño del archivo de carga de una única instancia de Amazon EC2 que ejecute una pila LAMP
-
Para abrir el archivo /etc/php.ini con el editor vi, ejecute el siguiente comando:
$ sudo vi /etc/php.ini
Nota: El nombre o la ruta del archivo /etc/php.ini pueden variar según la versión de PHP o la AMI que utilice.
-
En el editor vi, cambie el valor del parámetro upload_max_filesize a un tamaño superior a 2 MB y, a continuación, guarde el archivo.
Nota: Para modificar los parámetros php.ini, como memory_limit, consulte las directivas php.ini para post_max_size. Para obtener más información, consulte la entrada post_max_size en el sitio web de PHP.
-
Para reiniciar el servidor Apache, ejecute el comando correspondiente a su entorno.
En Amazon Linux:
$ sudo service httpd graceful
En Amazon Linux 2:
$ sudo service httpd reload
Nota: El nombre o la ruta del archivo /etc/php.ini pueden variar según la versión de PHP o la AMI que utilice. El comando para reiniciar el servidor Apache también puede variar si utiliza una distribución distinta de la AMI de Amazon Linux. WordPress limita la memoria de sus procesos de PHP de forma predeterminada.
Información relacionada
Personalización avanzada de entornos con archivos de configuración (.ebextensions)
Despliegue de sitio web de WordPress de alta disponibilidad con una base de datos externa de Amazon Relational Database Service (Amazon RDS) en Elastic Beanstalk
Tutorial: Aloje un blog de WordPress en AL2
Descripción de las directivas del núcleo de php.ini en el sitio web de PHP