Pour faire disparaître un avertissement de limite de mémoire PHP dans Nextcloud, définissez memory_limitune valeur minimale 512Mde 512 Mo dans la configuration PHP utilisée par le serveur web, puis redémarrez ou rechargez le service PHP concerné. Le manuel d'administration stable actuel de Nextcloud recommande une valeur minimale de 512 Mo pour ce paramètre PHP. La raison la plus fréquente pour laquelle un avertissement persiste après modification d'un fichier est que le serveur web utilise une configuration PHP différente de celle de l'installation PHP en ligne de commande.
Choisissez la procédure correspondant à votre déploiement : Apache avec mod_php, Apache ou Nginx avec PHP-FPM, un conteneur ou un package Nextcloud géré. Ne modifiez pas la configuration de l'hôte php.inien supposant qu'elle est utilisée par tous les déploiements. Vérifiez le résultat sur la page d'aperçu de l'administration de Nextcloud, qui reflète la configuration de l'application web.
Que signifie cet avertissement ?
La valeur de `max_memory` pour PHP memory_limitcorrespond à la mémoire maximale qu'un script PHP peut allouer. Elle ne correspond pas à la RAM totale réservée à Nextcloud et n'augmente pas la mémoire physique disponible sur le serveur. Le manuel de Nextcloud recommande de configurer au moins 512 Mo pour cette directive. Par ailleurs, la configuration système requise précise que les besoins réels en mémoire du serveur varient en fonction des utilisateurs, des applications, des fichiers et de l'activité ; elle recommande au moins 512 Mo de RAM par processus PHP, avec un minimum de 128 Mo.
Augmenter la limite PHP peut résoudre un avertissement de configuration et allouer plus de mémoire aux requêtes gourmandes en ressources. Cela ne permet pas d'ajouter de la RAM à un serveur sous-dimensionné, de corriger une fuite de mémoire ni de garantir le bon déroulement de toutes les applications. Si le serveur est déjà saturé en mémoire, un plafond plus élevé par requête peut accroître le risque de saturation de la RAM système par plusieurs processus PHP simultanés.
Quelle configuration PHP devez-vous modifier ?
Commencez par identifier comment PHP exécute Nextcloud. Une vérification dans le terminal permet php --inid'afficher la configuration en ligne de commande (CLI). Les requêtes web de Nextcloud peuvent utiliser un module Apache distinct ou un service PHP-FPM avec une configuration différente php.iniou un pool de configurations spécifique. Nextcloud précise que PHP pour le web et en ligne de commande peut utiliser des fichiers de configuration différents.
Sur les systèmes dérivés de Debian, les emplacements typiques incluent /etc/php/8.x/apache2/php.inile module PHP d'Apache et /etc/php/8.x/fpm/php.iniPHP-FPM. La version de PHP et les noms de répertoires varient. D'autres distributions utilisent généralement des chemins différents, comme un répertoire partagé /etc/php.ini. Ces exemples sont donnés à titre indicatif ; utilisez votre gestionnaire de paquets, la configuration de vos services et l'environnement d'exécution PHP pour localiser le fichier actif.
Pour examiner la configuration de l'interface de ligne de commande, exécutez :
php --ini
php -i | grep -i '^memory_limit'
Ces commandes sont utiles pour les tâches planifiées qui exécutent PHP depuis la ligne de commande, mais elles ne prouvent pas que le processus Nextcloud accessible via le navigateur utilise la même valeur. Évitez de laisser une phpinfo()page publique sur le serveur : elle peut divulguer des chemins d’accès, des modules et des informations d’exécution.
Comment définir la limite pour Apache ou PHP-FPM ?
Sauvegardez le fichier de configuration actif avant de le modifier. Dans le fichier approprié php.ini, trouvez la memory_limitligne existante et définissez-la sur 512Mune valeur supérieure adaptée à votre charge de travail :
memory_limit = 512M
Utilisez un seul paramètre actif plutôt que d'ajouter des lignes dupliquées à la fin de plusieurs fichiers. Un pool PHP-FPM peut également définir des valeurs pour ses workers ; vérifiez donc la configuration du pool si la valeur php.inin'est pas prise en compte. Certaines configurations PHP prennent en charge un paramètre par répertoire.user.ini ; son activation dépend de la configuration du serveur et doit être confirmée auprès de l'administrateur.
Apache utilisant mod_php
Modifiez le fichier php.inide configuration utilisé par Apache, enregistrez-le, puis redémarrez Apache pour que le module recharge ses paramètres. Les noms de service varient. Sur Debian ou Ubuntu, le service est généralement `service.conf`apache2 ; sur les systèmes de la famille RHEL, il est généralement `service.conf` httpd. Utilisez le nom de service correspondant à votre système d'exploitation et à vos procédures de maintenance.
sudo systemctl restart apache2
Remplacez ce nom apache2si votre distribution utilise un nom d'unité différent. Si Nextcloud est servi par PHP-FPM au lieu de mod_php, le simple redémarrage d'Apache ne rechargera pas les processus PHP.
Apache ou Nginx utilisant PHP-FPM
Modifiez la configuration PHP-FPM utilisée par le site. Après avoir enregistré la modification, redémarrez ou rechargez le service PHP-FPM correspondant. Son unité peut inclure la version de PHP, par exemple php8.3-fpm, ou utiliser un autre nom spécifique au fournisseur.
sudo systemctl restart php8.3-fpm
Utilisez le nom de service correspondant à votre version de PHP installée. Nginx transmet les requêtes PHP à FPM ; par conséquent, toute modification des paramètres PHP nécessite généralement d'appliquer la modification à FPM. Un simple redémarrage de Nginx ne recharge pas la limite de mémoire de PHP. Si votre configuration de pool PHP-FPM comporte des surcharges memory_limit, ajustez le paramètre du pool ou supprimez la surcharge, puis redémarrez le pool.
Que se passe-t-il si Nextcloud s'exécute dans Docker, AIO, Snap ou un autre package ?
Utilisez le mécanisme de configuration de cette méthode d'installation. La modification des fichiers PHP de l'hôte n'affecte généralement pas l'environnement d'exécution PHP dans un conteneur ou un package isolé. L'image Docker officielle de Nextcloud documente la PHP_MEMORY_LIMITvariable d'environnement, dont la valeur par défaut est indiquée 512Mdans la documentation de l'image actuelle. Définissez-la dans le fichier Compose ou la configuration du conteneur, puis recréez ou redémarrez le conteneur d'application conformément à la procédure de déploiement.
environment:
PHP_MEMORY_LIMIT: 512M
Ne copiez pas ce paramètre pour chaque type d'installation. Le manuel de Nextcloud indique que les environnements clés en main tels que AIO, Snap, NCP et Community Docker intègrent PHP préconfiguré et invite les administrateurs à consulter les instructions spécifiques à chaque paquet pour toute personnalisation. Pour ces configurations, utilisez l'interface ou la documentation dédiée. Les volumes montés persistants et la configuration générée peuvent également remplacer une modification manuelle ponctuelle.
Comment pouvez-vous confirmer que l'avertissement est corrigé ?
- Appliquez la modification à la configuration PHP côté web et redémarrez ou rechargez le service web/PHP concerné.
- Connectez-vous à Nextcloud en tant qu'administrateur et ouvrez Paramètres > Administration > Vue d'ensemble .
- Actualisez la page et vérifiez les avertissements de configuration. Assurez-vous que l'avertissement relatif à la limite de mémoire PHP a disparu.
- Exécutez une opération représentative qui a précédemment déclenché l'avertissement, telle que la tâche de l'application concernée, et consultez les journaux Nextcloud et PHP pour rechercher les messages d'épuisement de la mémoire.
Si vous exécutez également des tâches Nextcloud en arrière-plan via cron système, vérifiez séparément la configuration PHP de l'interface de ligne de commande (CLI). L'avertissement affiché sur le web peut être effacé même si les tâches CLI utilisent encore une limite inférieure. Confirmez la valeur de la CLI avec php --inila php -imême commande PHP que celle utilisée par cron.
Quand faut-il augmenter la valeur au-dessus de 512M ?
N'augmentez cette limite que lorsque l'avertissement a disparu mais qu'une charge de travail documentée atteint toujours la limite PHP, ou lorsque les recommandations de l'application préconisent une limite supérieure. Vérifiez d'abord la mémoire serveur réelle, le nombre de processus PHP-FPM, la mémoire de la base de données et les autres services. Étant donné que PHP applique la limite par script, plusieurs processus actifs peuvent utiliser une quantité importante de mémoire simultanément. Définissez une limite adaptée au budget mémoire de l'hôte plutôt que d'utiliser la valeur par défaut -1, qui, selon la documentation PHP, n'impose aucune limite de mémoire.
Si l'avertissement disparaît mais que le serveur continue de ralentir ou que des processus sont interrompus, examinez l'utilisation de la mémoire système et du swap, les journaux PHP-FPM et les journaux Nextcloud. Vérifiez si une application ou une requête spécifique consomme une quantité excessive de mémoire. Un cache mémoire tel qu'APCu ou Redis permet de résoudre les problèmes de mise en cache et de performances ; il ne remplace pas la configuration de PHP memory_limit. Modifiez un facteur à la fois afin de déterminer si le résultat s'améliore.
Vérifications rapides par symptôme
- L'avertissement persiste après la modification du fichier php.ini : vérifiez si vous avez modifié le fichier CLI au lieu du fichier Apache/FPM, ou si un paramètre de pool le remplace.
- L'avertissement disparaît, mais une tâche cron échoue toujours : vérifiez le binaire PHP de l'interface de ligne de commande et sa configuration séparée.
- Le serveur web renvoie une erreur après le redémarrage : vérifiez l’état et les journaux du serveur web ou du service PHP-FPM, et restaurez la sauvegarde si la modification de la configuration a provoqué un échec de démarrage.
- L'avertissement disparaît, mais l'hôte manque de RAM : réduisez la concurrence, ajoutez de la mémoire ou identifiez le processus utilisant la mémoire avant d'augmenter davantage la limite PHP.
- Vous utilisez un conteneur ou un package clé en main : modifiez les paramètres PHP pris en charge par le package plutôt que le fichier php.ini de l’hôte.
Références officielles