# Extensions et paramètres PHP

Source: https://support.kapsulehost.com/fr-fr/php-extensions-and-ini

Quelles versions et extensions PHP l'hébergement web KapsuleHost propose pour WordPress, WooCommerce et les sites PHP, quels paramètres vous pouvez modifier vous-même, et pourquoi une modification peut mettre jusqu'à cinq minutes à apparaître.

Les sites statiques, Node.js et Python n'exécutent pas PHP. Tout ce qui concerne PHP pour un site se trouve à un seul endroit : **Sites web**, cliquez sur le site, **Paramètres**, puis **PHP**. Cette page contient le sélecteur de version, les paramètres que vous pouvez modifier, un lanceur Composer, et le journal d'erreurs PHP.

![La page PHP d'un site dans KPanel, avec le sélecteur de version et les paramètres que vous pouvez modifier](https://support.kapsulehost.com/help/screenshots/php-extensions-and-ini.2214ab47.webp)

## Choisir une version de PHP

Quatre versions sont sélectionnables : **8.4, 8.3, 8.2 et 8.1**. Les nouveaux sites utilisent par défaut la version 8.3.

Choisissez la version la plus récente que votre logiciel prend réellement en charge. Les versions récentes de PHP sont nettement plus rapides et bénéficient de correctifs de sécurité plus longtemps. La raison de ne pas passer directement à la plus récente est la compatibilité : un vieux plugin ou un morceau de code personnalisé écrit il y a des années peut échouer purement et simplement sur une version avec laquelle il n'a jamais été testé.

Pour la modifier, sélectionnez la version et cliquez sur **Appliquer la version**. Le changement prend effet immédiatement, sans redémarrage nécessaire de votre part et sans interruption de service.

> **Tip:** Changez d'abord la version de PHP sur l'environnement de préproduction, parcourez le site, et ensuite seulement modifiez-la en production. Si vous devez le faire en direct, faites-le quand vous pouvez surveiller la situation, et sachez que revenir en arrière ne prend qu'un clic. Voir [Environnements de préproduction](https://support.kapsulehost.com/fr-fr/staging-environments).

Si un changement de version casse le site, revenez à la version précédente et lisez le journal. L'erreur nommera le fichier qui n'a pas pu s'exécuter. Voir [Changer de version PHP](https://support.kapsulehost.com/fr-fr/changing-php-version) et [Journaux d'erreurs](https://support.kapsulehost.com/fr-fr/error-logs).

## Paramètres que vous pouvez modifier

La page PHP expose cinq paramètres sous forme de menus déroulants. Ce sont ceux qui posent réellement problème en pratique, c'est pourquoi ce sont eux qui sont mis en avant.

| Paramètre | Valeur par défaut | Valeurs disponibles | Ce qu'il contrôle |
|---|---|---|---|
| `memory_limit` | 256M | 128M, 256M, 512M, 1024M, 2048M | La quantité de mémoire qu'une requête peut utiliser |
| `max_execution_time` | 30 | 30, 60, 120, 300, 600 | Le nombre de secondes pendant lesquelles une requête peut s'exécuter |
| `upload_max_filesize` | 64M | 16M, 32M, 64M, 128M, 256M | Le plus gros fichier unique pouvant être téléversé |
| `post_max_size` | 65M | 17M, 33M, 65M, 129M, 257M | La plus grosse soumission de formulaire totale |
| `max_input_vars` | 3000 | 1000, 3000, 5000, 10000 | Le nombre de champs qu'une soumission peut contenir |

Celui qu'il vous faut :

- **Les téléversements échouent au-delà d'une certaine taille** : augmentez `upload_max_filesize`, et `post_max_size` avec lui.
- **Un formulaire volumineux ou un constructeur de page perd des champs à l'enregistrement** : augmentez `max_input_vars`. C'est un problème invisible et exaspérant, car rien ne génère d'erreur. Les champs en trop sont simplement abandonnés silencieusement.
- **Une page meurt en cours de chargement sans erreur** : augmentez `memory_limit`. Voir [Limite de mémoire WordPress](https://support.kapsulehost.com/fr-fr/wordpress-memory-limit).
- **Une importation ou exportation longue expire** : augmentez `max_execution_time`, et envisagez d'exécuter la tâche depuis la ligne de commande à la place. Voir [WP-CLI](https://support.kapsulehost.com/fr-fr/wordpress-wp-cli).

> **Note:** `post_max_size` doit être plus grand que `upload_max_filesize`, car le fichier téléversé voyage à l'intérieur de l'article. Si vous choisissez une combinaison où ce n'est pas le cas, la plateforme ajuste `post_max_size` automatiquement à votre place. C'est pourquoi vous pourriez voir une valeur que vous n'avez pas choisie.

## Pourquoi un changement met jusqu'à cinq minutes à apparaître

C'est la source de confusion la plus fréquente sur cette page, il vaut donc la peine d'être précis.

Vos paramètres sont écrits dans un fichier `.user.ini` situé à la racine de votre site. PHP lit ce fichier puis **le met en cache pendant 300 secondes**, soit cinq minutes. Tant que ce cache n'a pas expiré, PHP continue d'utiliser les valeurs précédentes.

Ainsi, après avoir enregistré une modification :

- La page continuera d'indiquer l'ancienne limite pendant jusqu'à cinq minutes.
- `phpinfo()` continuera d'indiquer l'ancienne limite pendant jusqu'à cinq minutes.
- Un rechargement forcé n'y change rien. Vider le cache de votre navigateur non plus.
- Vous n'avez besoin de redémarrer quoi que ce soit, et vous ne le pouvez pas. Attendez simplement.

Si plus de cinq minutes se sont écoulées et que la valeur n'a pas changé, alors quelque chose ne va vraiment pas et cela vaut la peine d'ouvrir un ticket.

## Modifier `.user.ini` vous-même

Vous pouvez modifier `.user.ini` directement via SFTP ou SSH si vous le préférez, ou si vous avez besoin d'une directive que le panneau n'expose pas. Il se trouve à la racine de votre site. Voir [Accès SFTP](https://support.kapsulehost.com/fr-fr/sftp-access).

Le format comporte une directive par ligne :

```ini
memory_limit = 512M
max_execution_time = 120
```

Deux limites importantes concernant ce que `.user.ini` peut faire :

**Cela ne fonctionne que pour les directives que PHP autorise à définir par répertoire ou par utilisateur.** Les cinq ci-dessus sont toutes concernées. Les directives qui ne peuvent être définies qu'au niveau système, comme `disable_functions` ou le chargement d'une extension avec `extension=`, sont ignorées dans un fichier `.user.ini`. Elles ne généreront pas d'erreur, elles ne feront simplement rien, c'est pourquoi des gens y passent un après-midi entier.

**Le panneau ne relit que les clés simples.** Les directives contenant un point, comme `opcache.enable` ou `date.timezone`, sont respectées par PHP mais n'apparaîtront pas dans le formulaire du panneau. Si vous en définissez une à la main puis modifiez ensuite quelque chose via le panneau, vérifiez le fichier par la suite.

> **Warning:** L'hébergement web KapsuleHost fonctionne sous nginx, pas sous Apache. Les fichiers `.htaccess` ne sont lus par personne. Les directives PHP placées dans un fichier `.htaccess`, comme `php_value memory_limit`, ne font absolument rien ici. Utilisez `.user.ini` ou le panneau à la place. Voir [WordPress et .htaccess](https://support.kapsulehost.com/fr-fr/wordpress-htaccess).

## Quelles extensions sont disponibles

La version standard est étendue et comprend tout ce que WordPress, WooCommerce et la plupart des applications PHP demandent.

**Bases de données** : `mysqli`, `pdo_mysql`, `sqlite3`, `pdo_sqlite`
**Images** : `gd`, `imagick`, `exif`
**Mise en cache** : `Zend OPcache`, `redis`, `memcached`
**Texte et localisation** : `mbstring`, `iconv`, `intl`, `gettext`, `ctype`
**XML et données** : `dom`, `simplexml`, `xml`, `xmlreader`, `xmlwriter`, `xsl`, `json`
**Réseau** : `curl`, `soap`, `sockets`, `ftp`, `openssl`
**Mathématiques et cryptographie** : `bcmath`, `sodium`, `hash`, `random`
**Fichiers et système** : `fileinfo`, `zip`, `zlib`, `phar`, `posix`, `pcntl`, `shmop`, `calendar`, `tokenizer`

Une différence entre versions à connaître : l'extension `imap` est présente en 8.3 et dans les versions antérieures mais pas en 8.4, car elle a été retirée de PHP lui-même dans cette version. Si vous avez une application qui en a encore besoin, restez en 8.3 ou migrez cette application vers une bibliothèque de messagerie moderne.

**Non installés** : pilotes PostgreSQL, MongoDB, Xdebug, `mcrypt`, et les chargeurs de code commerciaux tels qu'ionCube et SourceGuardian.

Vous ne pouvez pas activer ou désactiver vous-même des extensions depuis le panneau. Si votre application a besoin de quelque chose qui ne figure pas dans la liste, ouvrez un ticket et décrivez ce que vous utilisez. La possibilité de l'ajouter dépend de l'extension. Voir [Ouvrir un ticket d'assistance](https://support.kapsulehost.com/fr-fr/opening-a-support-ticket).

## Vérifier ce qui est réellement chargé

Plutôt que de deviner :

- **Sur WordPress** : Outils, puis État de santé du site, puis Infos, puis Serveur. Cela liste la version de PHP et les limites pertinentes.
- **Via SSH** : `php -v` pour la version et `php -m` pour les extensions chargées. Voir [Ajouter des clés SSH](https://support.kapsulehost.com/fr-fr/adding-ssh-keys).

> **Warning:** Ne laissez pas un fichier `phpinfo()` à la racine web de votre site. Il publie vos chemins, vos extensions et votre configuration à quiconque le trouve, et les scanners automatisés recherchent précisément ce nom de fichier. Si vous en créez un pour vérifier quelque chose, supprimez-le immédiatement après.

## Guides connexes

- [Changer de version PHP](https://support.kapsulehost.com/fr-fr/changing-php-version)
- [Limite de mémoire WordPress](https://support.kapsulehost.com/fr-fr/wordpress-memory-limit)
- [Journaux d'erreurs](https://support.kapsulehost.com/fr-fr/error-logs)
- [Codes d'erreur HTTP](https://support.kapsulehost.com/fr-fr/http-error-codes)
- [Lenteur du site et limites de ressources](https://support.kapsulehost.com/fr-fr/site-slow-resource-limits)
- [WordPress et .htaccess](https://support.kapsulehost.com/fr-fr/wordpress-htaccess)
- [Glossaire de l'hébergement](https://support.kapsulehost.com/fr-fr/glossary)
