Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
technique:adminserv:nextcloud:php [2022/04/14 16:50] – qduchemi | technique:adminserv:nextcloud:php [2023/06/10 19:42] (Version actuelle) – qduchemi |
---|
## Modifier un paramètre PHP | {{indexmenu_n>10}} |
| ## Modifier un paramètre PHP ou PHP-FPM |
| |
### Cas général | ### Cas général |
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. |
| |
<bootnote warning> | <bootnote warning> |
</bootnote> | </bootnote> |
| |
La meilleure solution est de monter un fichier dans `/usr/local/etc/php/conf.d/`. C'est ce qui [est fait actuellement](https://gitlab.utc.fr/picasoft/projets/services/nextcloud-pica/-/blob/52f46a222e6be26d2e3a491d23a3c86e4aa37a9f/docker-compose.yml#L21). | La meilleure solution est : |
| |
<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 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.</bootnote> | - 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). |
| |
Il suffit donc de modifier ce fichier sur le dépôt et de redémarrer le conteneur applicatif. | <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 |
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 |
``` | ``` |
| |
Il suffit de les ajouter dans le fichier [z-php-custom.ini](https://gitlab.utc.fr/picasoft/projets/services/nextcloud-pica/-/blob/master/z-php-custom.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 |
| |
| #### 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> | <bootnote web>Idée prise [ici](https://docs.nextcloud.com/server/latest/admin_manual/issues/general_troubleshooting.html#php-version-and-information).</bootnote> |
<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> |
| |
<bootnote warning>Certains paramètres, notamment ceux de FPM, 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> | #### 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> |