**Ceci est une ancienne révision du document !**
Modifier un paramètre PHP
Cas général
Picasoft utilise une image Nextcloud qui fait tourner PHP-FPM, permettant d’appeler des scripts PHP depuis nginx
de façon efficace.
Traditionnellement, PHP se configure grâce au fichier php.ini
. Cependant, ce fichier contient de nombreuses directives, potentiellement modifiées par Nextcloud au fil des mises à jour.
Comme indiqué dans un bout de sa documentation, Nextcloud utilise le fichier .user.ini
pour écraser les paramètres PHP.
Ce fichier peut au choix être monté ou présent dans un volume (comme c’est le cas actuellement).
Il suffit donc de modifier ce fichier.
Cas d'application
Assez souvent, notre instance est très lente, voir finit par envoyer des timeout (HTTP 504), notamment sur la synchronisation des calendriers. Les logs donnent un avertissement :
[14-Apr-2022 13:40:32] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
Cette valeur désigne le « nombre maximum de processus fils à créer lorsque pm
est réglé sur dynamic
» et « affecte la limite du nombre de requêtes simultanées qui seront servies » ([source]). En d’autres termes, la configuration de base de Nextcloud n’autorise que 5 requêtes servies simultanément!
Après quelques recherches, cette réponse sur Reddit donne des valeurs qui semblent plus adéquate à la situation :
pm = dynamic pm.max_children = 50 pm.start_servers = 15 pm.min_spare_servers = 15 pm.max_spare_servers = 25 pm.max_requests = 500
Il suffit de les ajouter dans .user.ini
, puis de redémarrer le conteneur.
Vérifier les paramètres
:
Idée prise ici.
Se rendre dans le conteneur et créer un fichier phpinfo.php
qui affiche la configuration PHP. Exemple :
- snippet.shell
$ docker exec -it nextcloud-app sh echo "<?php phpinfo(); ?>" > phpinfo.php
Puis visiter cette page.
Attention:
Leaker toute la configuration est dangereux, à ne faire que parcimonieusement et penser à supprimer le fichier après usage.