Pour faire disparaître l'avertissement « Le cache PHP OPcache n'est pas correctement configuré » de Nextcloud, ouvrez l'avertissement complet dans Paramètres d'administration → Vue d'ensemble, puis augmentez uniquement la limite du cache OPcache indiquée dans la configuration PHP utilisée par le serveur web. Redémarrez le service PHP correspondant et vérifiez à nouveau l'avertissement ; la modification de la configuration PHP en ligne de commande seule peut ne pas changer la configuration utilisée par Nextcloud.
Par exemple, si Nextcloud signale que le tampon des chaînes internées est presque plein, augmenter sa taille opcache.interned_strings_bufferde 16 à 32 Mo constitue un premier ajustement judicieux lorsque le serveur dispose de suffisamment de RAM. Un autre avertissement concernant les scripts mis en cache ou la mémoire partagée requiert un paramétrage différent.
Pourquoi Nextcloud affiche-t-il cet avertissement OPcache ?
OPcache stocke le bytecode PHP compilé en mémoire partagée, réduisant ainsi la quantité de compilation nécessaire pour les requêtes web répétées. Il réserve également de l'espace pour les chaînes internées, permettant à PHP de réutiliser des chaînes identiques. Ces capacités sont des limites distinctes ; augmenter l'une ne résout donc pas nécessairement une alerte concernant l'autre.
D'après la documentation d'optimisation du serveur Nextcloud 35 , le panneau d'administration signale un problème lorsque la taille d'OPcache dépasse 90 % de sa capacité allouée. Le message peut mentionner un tampon de chaînes internées presque plein, un nombre limité de scripts mis en cache ou une mémoire partagée insuffisante. Ce détail détermine la solution.
Nextcloud l'exige également opcache.save_comments=1, car il dépend de la préservation des commentaires du code PHP. Une extension OPcache désactivée ou la préservation des commentaires désactivée constitue donc un problème de configuration, et non un simple problème de dimensionnement du cache.
1. Identifier le contexte qui nécessite une attention particulière
Connectez-vous en tant qu'administrateur, accédez à Paramètres d'administration → Vue d'ensemble et lisez l'avertissement OPcache complet. Notez la directive exacte, le cas échéant. Ne présumez pas que chaque avertissement OPcache signifie que la taille du tampon des chaînes internées est insuffisante.
- Le tampon de chaînes internes est presque plein : vérifiez
opcache.interned_strings_buffer.
- La mémoire partagée OPcache est presque pleine : vérifiez
opcache.memory_consumption.
- Scripts ou clés mis en cache approchant la limite : vérifiez
opcache.max_accelerated_files.
- OPcache désactivé ou commentaires non conservés : vérifiez
opcache.enableet opcache.save_comments.
2. Trouvez la configuration PHP qui héberge Nextcloud.
Sur les serveurs Debian ou Ubuntu utilisant PHP-FPM, la configuration PHP est généralement organisée par version de PHP et API serveur. Par exemple, PHP 8.3 FPM peut lire les fichiers situés dans le répertoire `/var/php/php` /etc/php/8.3/fpm/conf.d/, tandis que le module PHP d'Apache peut utiliser `/var/php/ php` /etc/php/8.3/apache2/conf.d/.
Pour voir quels services PHP-FPM existent sur un hôte systemd, exécutez :
systemctl list-units --type=service 'php*-fpm.service'
Vérifiez les fichiers OPcache applicables en les remplaçant par votre version PHP installée :
sudo ls -l /etc/php/8.3/fpm/conf.d/*opcache*
sudo grep -R 'opcache\.' /etc/php/8.3/fpm/conf.d/
Si aucun fichier n'est trouvé, examinez le répertoire principal php.iniet les conventions de packaging de votre distribution. Cette commande php --iniest utile pour identifier la configuration PHP en ligne de commande , mais la ligne de commande et PHP-FPM peuvent charger des paramètres différents.
Pour Docker ou Nextcloud All-in-One, examinez la configuration PHP à l'intérieur du conteneur Nextcloud et utilisez une méthode de configuration persistante prise en charge. La modification /etc/phpdes fichiers hôtes ne configure généralement pas PHP dans un conteneur ; toute modification apportée à un fichier de conteneur généré peut être annulée par sa recréation.
3. Augmenter la limite signalée sans modifier les paramètres non liés
Sauvegardez le fichier de configuration concerné avant toute modification. Sur une installation PHP-FPM classique sous Debian/Ubuntu, une méthode simple et maintenable consiste à ajouter une configuration locale dans le conf.drépertoire FPM de votre version de PHP. Vérifiez que ce répertoire est bien chargé par votre installation PHP-FPM avant de poursuivre.
Pour l' exemple de tampon de chaînes internées , créez ou modifiez une substitution locale telle que/etc/php/8.3/fpm/conf.d/99-nextcloud-opcache.ini :
; Example for a warning about interned strings
opcache.interned_strings_buffer=32
Ici, 32cela signifie 32 Mo, et non 32 octets. Adaptez la valeur finale à l'utilisation réelle et à la RAM disponible.
Si l'avertissement mentionne une limite différente, utilisez l'exemple correspondant au lieu d'additionner aveuglément les trois :
; Example only: larger shared bytecode cache
opcache.memory_consumption=256
; Example only: allow more cached script keys
opcache.max_accelerated_files=20000
Les valeurs de opcache.memory_consumptionsont exprimées en mégaoctets, tandis que opcache.max_accelerated_filesspécifie une limite de clé de script. La documentation officielle de la configuration d'OPcache pour PHP explique leurs unités, leurs valeurs par défaut et les possibilités de modification.
Lorsque l'avertissement signale une désactivation d'OPcache ou l'absence de commentaires plutôt qu'un problème de capacité, vérifiez plutôt les paramètres suivants :
opcache.enable=1
opcache.save_comments=1
Ne désactivez pas la connexion opcache.validate_timestampsni ne prolongez considérablement le processus opcache.revalidate_freqpour ignorer cet avertissement. Nextcloud prévient qu'une revalidation tardive du cache peut empêcher la prise en compte immédiate des modifications de configuration et de mise à niveau.
4. Appliquer la nouvelle configuration
Pour un serveur d'exemple exécutant PHP 8.3 via PHP-FPM, commencez par valider la configuration du service, puis redémarrez le service correspondant pendant une courte fenêtre de maintenance :
sudo php-fpm8.3 -t
sudo systemctl restart php8.3-fpm
Remplacez 8.3`<version>` par la version de PHP-FPM installée et vérifiez le nom de l'exécutable et du service avant d'exécuter l'une ou l'autre commande. Un redémarrage interrompt les requêtes traitées par ce pool. Sur Apache mod_php, le service concerné est Apache et non PHP-FPM ; pour les conteneurs, suivez la procédure de redémarrage ou de recréation documentée de votre déploiement tout en conservant la configuration.
Si le service ne redémarre pas, restaurez votre configuration sauvegardée et consultez le journal des erreurs PHP-FPM ou du serveur web.
5. Si l'avertissement persiste, vérifiez les paramètres PHP Web effectifs
Commencez par recharger les paramètres d'administration (Vue d'ensemble) après le redémarrage des processus PHP. Si l'avertissement persiste, vérifiez que la directive modifiée est bien chargée par l' environnement d'exécution PHP web , et non pas seulement par l'interface de ligne de commande. Recherchez un .inifichier chargé ultérieurement ou une surcharge du pool PHP-FPM qui remplace votre valeur.
Sur un serveur que vous contrôlez, vous pouvez inspecter temporairement les valeurs PHP d'une page web à l'aide d'un point de terminaison de diagnostic à accès strictement restreint et de la fonction PHP `diagnostic` ini_get(). Ne laissez jamais une phpinfo()page publique en ligne : elle peut révéler l'environnement, les chemins d'accès, les modules et d'autres informations de configuration sensibles. Supprimez tout point de terminaison de diagnostic immédiatement après vérification.
Pour une alerte de dimensionnement persistante, examinez l'utilisation réelle d'OPcache en conditions de trafic normal plutôt que de doubler systématiquement les valeurs. La documentation PHPopcache_get_status() décrit les statistiques relatives à la mémoire, aux chaînes internées et aux scripts mis en cache disponibles pour un processus PHP en cours d'exécution.
L'image Docker officielle de Nextcloud et les déploiements tout-en-un utilisent leurs propres paramètres PHP par défaut ; ne présumez pas que les modifications apportées au niveau de l'hôte ou les valeurs recommandées d'une autre installation seront conservées. Consultez le dépôt Docker officiel de Nextcloud ou le dépôt tout-en-un officiel pour connaître le modèle de configuration correspondant à votre déploiement.
Vérifiez que la correction a fonctionné
Retournez dans les paramètres d'administration → Vue d'ensemble et vérifiez que l'avertissement relatif à OPcache a disparu. Ouvrez et rechargez quelques pages Nextcloud pour vous assurer que l'application fonctionne toujours normalement. Si l'avertissement réapparaît après une utilisation normale, revérifiez la limite mesurée et la configuration PHP web effective ; l'objectif est de laisser une marge suffisante sans allouer de mémoire inutile à OPcache.