Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
technique:adminserv:nextcloud:php [2022/04/14 16:26] – créée qduchemitechnique:adminserv:nextcloud:php [2023/06/10 19:42] (Version actuelle) qduchemi
Ligne 1: Ligne 1:
-## Modifier un paramètre PHP+{{indexmenu_n>10}} 
 +## Modifier un paramètre PHP ou PHP-FPM
  
 ### Cas général ### Cas général
Ligne 5: Ligne 6:
 Picasoft utilise une image Nextcloud qui fait tourner [PHP-FPM](https://www.php.net/manual/fr/install.fpm.php), permettant d'appeler des scripts PHP depuis `nginx` de façon efficace. Picasoft utilise une image Nextcloud qui fait tourner [PHP-FPM](https://www.php.net/manual/fr/install.fpm.php), 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. +Traditionnellement, PHP se configure grâce à un 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](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html#configuring-upload-limits-within-the-gui), Nextcloud utilise le fichier `.user.ini` pour écraser les paramètres PHP+<bootnote warning> 
 +Malgré ce qui est indiqué dans un [bout de sa documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html#configuring-upload-limits-within-the-gui), écraser la configuration dans le fichier `.user.ini` ne semble pas être le plus pertinent : il contient déjà des directives qui n'ont pas été remplies par nous. 
 +</bootnote>
  
-Ce fichier peut au choix être monté ou présent dans un volume (comme c'est le cas [actuellement](https://gitlab.utc.fr/picasoft/projets/services/nextcloud-pica/-/blob/857414ad54bef67911c692170c93b66ae864e13e/docker-compose.yml#L20)).+La meilleure solution est :
  
-Il suffit donc de modifier ce fichier.+- Pour PHP : monter un fichier `.ini` dans `/usr/local/etc/php/conf.d/`. C'est ce qui [est fait actuellement](https://gitlab.utc.fr/picasoft/projets/services/nextcloud-pica/-/blob/9662f0502e1cc1ca057a532cae9a45955c3a4384/docker-compose.yml#L21). 
 +- Pour PHP-FPM : monter un fichier `.conf` dans `/usr/local/etc/php-fpm.d`. C'est ce qui [est aussi fait actuellement](https://gitlab.utc.fr/picasoft/projets/services/nextcloud-pica/-/blob/9662f0502e1cc1ca057a532cae9a45955c3a4384/docker-compose.yml#L22). 
 + 
 +<bootnote>La version de PHP utilisée par Nextcloud est compilée avec l'option `--with-config-file-scan-dir=/usr/local/etc/php/conf.d`. Tous les fichiers `.ini` de ce dossier seront donc inclus dans la configuration, [par ordre alphabétique](https://www.php.net/manual/fr/configuration.file.php). C'est pour cela que notre fichier commence par `z`, pour être inclus à la fin. Pour PHP-FPM c'est la même limonade, la compilation met le fichier de configuration à `/usr/local/etc/php-fpm.`, qui inclue ensuite tous les fichiers `.conf` de `/usr/local/etc/php-fpm.d`.</bootnote> 
 + 
 +Il suffit donc de modifier un des ces fichiers sur le dépôt et de redémarrer le conteneur applicatif.
  
 ### Cas d'application ### Cas d'application
Ligne 23: Ligne 31:
 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! 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](https://www.reddit.com/r/NextCloud/comments/9e5ljv/nextcloud_and_phpfpm_adjustments/e5ppadx/) donne des valeurs qui semblent plus adéquate à la situation :+Après quelques recherches, cette [réponse sur Reddit](https://www.reddit.com/r/NextCloud/comments/9e5ljv/nextcloud_and_phpfpm_adjustments/e5ppadx/) donne des valeurs qui semblent plus adéquates à la situation :
  
 ``` ```
 +[www]
 pm = dynamic pm = dynamic
 pm.max_children = 50 pm.max_children = 50
Ligne 34: Ligne 43:
 ``` ```
  
-Il suffit de les ajouter dans `.user.ini`, puis de redémarrer le conteneur.+Comme ces valeurs concernent PHP-FPM, il suffit de les ajouter dans le fichier [zz-php-fpm-custom.conf](https://gitlab.utc.fr/picasoft/projets/services/nextcloud-pica/-/blob/master/zz-php-fpm-custom.conf), puis de redémarrer le conteneur.
  
-## Vérifier les paramètres+### Vérifier les paramètres
  
-<bootnote link>Idée prise [ici](https://docs.nextcloud.com/server/latest/admin_manual/issues/general_troubleshooting.html#php-version-and-information).</bootnote>+#### Pour PHP 
 + 
 +<bootnote web>Idée prise [ici](https://docs.nextcloud.com/server/latest/admin_manual/issues/general_troubleshooting.html#php-version-and-information).</bootnote>
  
 Se rendre dans le conteneur et créer un fichier `phpinfo.php` qui affiche la configuration PHP. Exemple : Se rendre dans le conteneur et créer un fichier `phpinfo.php` qui affiche la configuration PHP. Exemple :
  
-```shell+```bash
 $ docker exec -it nextcloud-app sh $ docker exec -it nextcloud-app sh
 echo "<?php phpinfo(); ?>" > phpinfo.php echo "<?php phpinfo(); ?>" > phpinfo.php
Ligne 50: Ligne 61:
  
 <bootnote warning>Leaker toute la configuration est dangereux, à ne faire que parcimonieusement et penser à supprimer le fichier après usage.</bootnote> <bootnote warning>Leaker toute la configuration est dangereux, à ne faire que parcimonieusement et penser à supprimer le fichier après usage.</bootnote>
 +
 +#### Pour PHP-FPM
 +
 +Depuis le conteneur, on peut récupérer les paramètres de la configuration pour voir s'ils sont bien pris en compte :
 +
 +```bash
 +$ php-fpm -tt
 +[...]
 +[14-Apr-2022 15:41:49] NOTICE: pm = dynamic
 +[14-Apr-2022 15:41:49] NOTICE: pm.max_children = 50
 +[14-Apr-2022 15:41:49] NOTICE: pm.start_servers = 15
 +[14-Apr-2022 15:41:49] NOTICE: pm.min_spare_servers = 15
 +[14-Apr-2022 15:41:49] NOTICE: pm.max_spare_servers = 25
 +[14-Apr-2022 15:41:49] NOTICE: pm.process_idle_timeout = 10
 +[...]
 +```
 +
 +Pour voir les paramètres runtime :
 +TODO : https://www.php.net/manual/fr/fpm.status.php
 +<bootnote warning>Certains paramètres ne sont pas affichés sur cette page et il semble n'y avoir [aucun moyen d'y accéder](https://serverfault.com/questions/878096/how-to-check-current-pm-max-children-setting).</bootnote>
  • technique/adminserv/nextcloud/php.1649946392.txt.gz
  • de qduchemi