Comment charger des fichiers WordPress d'une taille supérieure à 2 Mo dans mon environnement Elastic Beanstalk ?

Dernière mise à jour : 22/06/2020

Lorsque j'essaie de charger des fichiers WordPress d'une taille supérieure à 2 Mo dans mon environnement AWS Elastic Beanstalk, je reçois le message d'erreur suivant : « Le fichier chargé dépasse l'instruction upload_max_filesize dans php.ini. » Comment puis-je résoudre cette erreur ?

Brève description

La configuration PHP par défaut sur une instance Amazon Elastic Compute Cloud (Amazon EC2) ne vous permet pas de charger des fichiers WordPress d'une taille supérieure à 2 Mo. Pour charger des fichiers d'une taille supérieure à 2 Mo, modifiez la valeur par défaut du paramètre upload_max_filesize dans le fichier /etc/php.ini.

Important : M et MB sont des expressions équivalentes pour le mégaoctet. Par exemple, 2M équivaut à 2 Mo. Cependant, utilisez uniquement M dans votre fichier de configuration, car MB n'est pas valide dans un fichier de configuration.

Solution

Choisissez la méthode applicable à votre pile de solutions.

Mettre à jour la taille du fichier de chargement pour un environnement Elastic Beanstalk exécutant une pile de solutions PHP

Pour augmenter la taille de fichiers sur toutes les instances, effectuez les opérations suivantes pour mettre à jour l'Amazon Machine Image (AMI) sous-jacente.

1.    Dans un éditeur de code, créez un fichier nommé change_upload_size.config, puis ajoutez le code suivant au fichier :

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"

Remarque : dans l'exemple précédent, la valeur du paramètre post_max_size est mise à jour et passe de 32M (valeur par défaut) à 100M.

Conseil : pour modifier les paramètres php.ini tels que memory_limit, consultez les directives php.ini pour post_max_size. La valeur maximale memory_limit dans Elastic Beanstalk est 256M.

2.    À la racine de la solution groupée source de votre application, créez un répertoire appelé .ebextensions, puis déplacez le fichier change_upload_size.config vers le répertoire .ebextensions.

Si le répertoire .ebextensions se trouve déjà dans la solution groupée source de votre application, conservez le fichier change_upload_size.config dans le répertoire .ebextensions avec les autres fichiers .config. La structure du répertoire doit ressembler à l'exemple suivant :

├── 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.    Ouvrez la console Elastic Beanstalk, puis créez une archive zip de la solution groupée source de votre application.

4.    Pour charger votre code dans un environnement Elastic Beanstalk existant, sélectionnez votre environnement, puis Charger et déployer.

Remarque : pour déployer votre code dans un nouvel environnement Elastic Beanstalk, consultez la section Création d'un environnement Elastic Beanstalk.

Si le message d'erreur ne disparaît pas après le chargement du fichier .ebextensions, utilisez un validateur YAML pour rechercher les erreurs d'espace dans votre code. Pensez également à utiliser la commande remove_old_ini pour supprimer les fichiers de sauvegarde inutiles. Pour plus d'informations, consultez la section Extension de php.ini.

Modifier la taille du chargement de fichiers pour une seule instance Amazon EC2 exécutant une pile LAMP

1.    Pour ouvrir le fichier /etc/php.ini avec l'éditeur vi, exécutez la commande suivante :

$ sudo vi /etc/php.ini

Remarque : le nom de fichier ou le chemin /etc/php.ini peut varier en fonction de votre version de PHP ou de l'AMI que vous utilisez.

2.    Dans l'éditeur vi, remplacez la valeur du paramètre upload_max_filesize par une taille supérieure à 2 Mo, puis enregistrez le fichier.

Conseil : pour modifier les paramètres php.ini tels que memory_limit, consultez les directives php.ini pour post_max_size. Pour plus d'informations, consultez l'entrée post_max_size sur le site web PHP.

3.    Pour redémarrer correctement le serveur Apache, exécutez la commande appropriée pour votre environnement.

Pour Amazon Linux:

$ sudo service httpd graceful

Pour Amazon Linux 2:

$ sudo service httpd reload

Remarque : le nom de fichier ou le chemin /etc/php.ini peut varier en fonction de votre version de PHP ou de l'AMI que vous utilisez. La commande nécessaire pour redémarrer le serveur Apache peut également varier si vous utilisez une distribution autre que l'AMI Amazon Linux. WordPress limite la mémoire de ses processus PHP par défaut.