# Gérer les versions de PHP et PHP-FPM sur un serveur

> Installez plusieurs versions de PHP côte à côte, choisissez les versions par défaut, réglez mémoire, uploads et processus PHP-FPM, et appliquez les correctifs.

La page **PHP** d'un serveur liste les versions de PHP qui y sont installées. Vimonto Deploy installe PHP depuis le dépôt ondrej/php : plusieurs versions peuvent donc tourner côte à côte. Chaque version a son propre service PHP-FPM et ses propres réglages, et chaque site choisit la version sur laquelle il tourne. Depuis cette page, vous installez et supprimez des versions, choisissez la version par défaut, modifiez les réglages PHP les plus courants et installez les versions correctives.

La page est disponible sur les serveurs d'application, les serveurs web et les serveurs worker, les [types de serveurs](https://ops.vimonto.com/docs/fr/servers/server-types) qui font tourner PHP.

![La page PHP d'un serveur avec PHP 8.5 et 8.4 installés, leurs badges par défaut et leurs paramètres](https://ops.vimonto.com/docs-media/fr/server-php.webp?v=161e760d "Versions de PHP d'un serveur")

## Quelles versions de PHP pouvez-vous installer ?

Vimonto Deploy propose PHP **8.5**, **8.4**, **8.3**, **8.2** et **8.1**. Un nouveau serveur reçoit la version choisie lors de sa [création](https://ops.vimonto.com/docs/fr/servers/create-a-server), et cette version est d'abord la version par défaut, à la fois en ligne de commande et pour les nouveaux sites.

Chaque version est installée avec le même ensemble d'extensions :

| Extensions |
| --- |
| bcmath, cli, curl, fpm, gd, igbinary, imagick, intl, mbstring, memcached, msgpack, mysql, pgsql, readline, redis, soap, sqlite3, xml, zip |

La première installation place aussi Composer sur le serveur, après avoir vérifié l'installateur par rapport à sa signature publiée.

## Installer une nouvelle version de PHP

1. Ouvrez le serveur et choisissez **PHP** dans la barre latérale.
2. Cliquez sur **Installer une nouvelle version** et choisissez une version dans le menu. Le menu ne liste que les versions qui ne sont pas encore sur le serveur.
3. Confirmez avec **Installer**.

L'installation prend quelques minutes. La version affiche **Ajout** pendant l'exécution de la tâche, et vous pouvez la suivre sur la page [Activité](https://ops.vimonto.com/docs/fr/organization/activity). Les sites existants continuent d'utiliser leur propre version : installer une nouvelle version ne change rien pour eux.

Si l'installation échoue, la ligne affiche **Échoué** et un bouton **Réessayer**. Chaque étape peut être relancée sans risque.

> [!NOTE]
> Toute modification sur cette page nécessite la permission de gérer les serveurs (consultez [membres et rôles](https://ops.vimonto.com/docs/fr/organization/members-and-roles)), et le serveur doit être actif.

## Que sont la version par défaut en ligne de commande et pour les nouveaux sites ?

Chaque serveur a deux valeurs par défaut, affichées sous forme de badges à côté de la version :

- **Ligne de commande** : la version qui s'exécute quand vous ou un script tapez `php` sur le serveur, par exemple dans le [terminal](https://ops.vimonto.com/docs/fr/servers/terminal), dans les [tâches planifiées](https://ops.vimonto.com/docs/fr/servers/scheduler) et dans les [processus](https://ops.vimonto.com/docs/fr/servers/processes) qui appellent `php`. Vimonto Deploy la définit avec `update-alternatives`.
- **Nouveaux sites** : la version présélectionnée quand vous [créez un site](https://ops.vimonto.com/docs/fr/sites/create-a-site) sur ce serveur. Elle ne modifie pas les sites existants.

Pour changer une valeur par défaut, ouvrez le menu d'actions (**⋯**) d'une version et choisissez **Par défaut en ligne de commande** ou **Par défaut pour les nouveaux sites**. La valeur par défaut en ligne de commande lance une courte tâche sur le serveur ; celle des nouveaux sites est enregistrée immédiatement.

Pour passer un site existant sur une autre version, changez sa version de PHP dans les [paramètres du site](https://ops.vimonto.com/docs/fr/sites/site-settings).

## Modifier les réglages PHP

Cliquez sur **Paramètres** à côté d'une version pour modifier ses réglages les plus courants. Chaque version a ses propres valeurs, et **Appliquer** les écrit sur le serveur et recharge PHP-FPM.

| Réglage | Défaut | Plage | Effet |
| --- | --- | --- | --- |
| **Limite de mémoire (Mo)** | 512 | 64 à 16384 | La mémoire maximale qu'une requête peut utiliser (`memory_limit`). |
| **Upload maximal (Mo)** | 64 | 1 à 4096 | La taille maximale d'un upload et du corps d'une requête (`upload_max_filesize` et `post_max_size`). S'applique aussi à Nginx. |
| **Temps d'exécution maximal (secondes)** | 60 | 5 à 3600 | La durée maximale d'une requête (`max_execution_time`). Au-delà, PHP-FPM arrête la requête. |
| **Nombre max. de variables d'entrée** | 1000 | 1000 à 100000 | Le nombre de champs de formulaire qu'une requête peut contenir (`max_input_vars`). Les grands formulaires, comme dans WordPress ou Magento, en demandent plus. |
| **Processus PHP-FPM** | 5 | 2 à 500 | Le nombre de requêtes que PHP traite simultanément (`pm.max_children`). |
| **OPcache** | Activé | Activé ou désactivé | Met en cache le code PHP compilé. Plus rapide, et presque toujours souhaitable en production. |

Ces réglages s'appliquent à PHP-FPM, qui sert vos requêtes web. La ligne de commande utilise sa propre configuration avec une limite de mémoire de 1 Go : les longues commandes Artisan et les installations Composer ne sont donc pas limitées par la valeur web.

### De combien de processus PHP-FPM avez-vous besoin ?

Chaque processus PHP-FPM traite une requête à la fois et peut utiliser jusqu'à la limite de mémoire. Une règle simple : le nombre de processus multiplié par la mémoire typique d'une requête doit tenir dans la mémoire libre du serveur, à côté de la base de données et des autres services. Si les requêtes s'accumulent alors que le serveur a encore de la mémoire et du CPU disponibles, augmentez le nombre ; si le serveur manque de mémoire, baissez-le ou baissez la limite de mémoire. La page [monitoring](https://ops.vimonto.com/docs/fr/servers/monitoring) affiche la mémoire et la charge dans le temps.

Les réglages de processus de réserve du pool suivent le nombre que vous choisissez : vous ne définissez que le maximum.

> [!TIP]
> Quand vous augmentez **Upload maximal (Mo)**, Vimonto Deploy augmente aussi le `client_max_body_size` de Nginx sur le serveur, pour que les gros uploads ne soient pas refusés par Nginx avant que PHP ne les voie.

### Les réglages s'appliquent-ils aux sites isolés ?

En partie. Un [site isolé](https://ops.vimonto.com/docs/fr/sites/create-a-site) a son propre pool PHP-FPM, qui tourne sous son propre utilisateur Linux. La limite de mémoire, la taille d'upload, le temps d'exécution, les variables d'entrée et OPcache s'y appliquent aussi, car ce sont des réglages PHP de la version. Le nombre de **Processus PHP-FPM** ne s'applique qu'au pool partagé ; le pool d'un site isolé démarre des processus à la demande, jusqu'à 10.

## Mettre à jour vers la dernière version corrective

Ouvrez le menu d'actions (**⋯**) d'une version et choisissez **Mettre à jour vers le dernier patch**. Vimonto Deploy met à jour uniquement les paquets de cette version (par exemple de 8.4.11 à 8.4.12), puis redémarre son service PHP-FPM. Les versions correctives contiennent des correctifs de sécurité et de bugs, pas de nouvelles fonctionnalités du langage.

Les serveurs installent aussi automatiquement les mises à jour de sécurité : cette action sert surtout quand vous avez besoin d'un correctif immédiatement.

## Supprimer une version de PHP

Ouvrez le menu d'actions (**⋯**), choisissez **Supprimer**, puis confirmez. Vimonto Deploy arrête le service PHP-FPM de la version, supprime ses paquets et efface sa configuration.

Vous ne pouvez pas supprimer une version qui est la version par défaut en ligne de commande ou pour les nouveaux sites : faites d'abord d'une autre version la version par défaut.

> [!WARNING]
> Les sites qui utilisent encore cette version cesseront de fonctionner. Passez-les sur une autre version dans leurs [paramètres de site](https://ops.vimonto.com/docs/fr/sites/site-settings) avant de la supprimer.

## Questions fréquentes

### Comment augmenter la limite d'upload de PHP ?

Ouvrez **PHP**, cliquez sur **Paramètres** à côté de la version utilisée par votre site, augmentez **Upload maximal (Mo)** et cliquez sur **Appliquer**. Vimonto Deploy modifie à la fois les limites d'upload et de POST de PHP et la limite du corps de requête de Nginx.

### Différents sites d'un même serveur peuvent-ils utiliser différentes versions de PHP ?

Oui. Installez chaque version nécessaire sur la page **PHP**, puis choisissez la version de chaque site à sa création ou plus tard dans ses paramètres.

### Pourquoi `php -v` sur le serveur affiche-t-il une autre version que celle de mon site ?

La ligne de commande utilise la version par défaut **Ligne de commande**, tandis que chaque site utilise sa propre version via PHP-FPM. Faites de la version du site la version par défaut en ligne de commande, ou appelez directement la version, par exemple `php8.4 artisan migrate`.

### Puis-je modifier php.ini à la main ?

Vimonto Deploy écrit ses réglages dans `/etc/php/{version}/fpm/conf.d/99-vimonto.ini` et écrase ce fichier quand vous cliquez sur **Appliquer**. Les modifications dans d'autres fichiers sous `/etc/php` sont laissées telles quelles, mais les réglages de `99-vimonto.ini` priment sur la plupart d'entre elles.
