Exigences pour PHP
Certains modules spécifiques peuvent avoir des exigences particulières concernant les extensions et configurations PHP, en plus de celles énumérées ci-dessous, veuillez donc consulter la documentation du module.
Versions de PHP supportées
Version PHP | Supportée par Drupal | Recommandée pour Drupal |
---|---|---|
5.5 | ![]() |
![]() |
5.6 | ![]() |
![]() |
7.0 | Oui, 7.0.8 avec Drupal 8.7.0 (note 2 ci-dessous) | ![]() |
7.1 | Oui | ![]() |
7.2 | Oui, depuis Drupal 8.5.0 | ![]() |
7.3 | Oui, depuis Drupal 8.6.4 (note 1 ci-dessous) | ![]() |
7.4 | Oui, depuis Drupal 8.8.3 | ![]() |
8.0 | ![]() |
1) Lisez la note de changement pour plus d’informations sur le support de PHP 7.3.
2) Lisez la note de changement concernant la fin du support de PHP 5.
Que signifie « version recommandée » pour PHP ?
Drupal fonctionnera sur toutes les versions supportées de PHP. Les versions recommandées sont les meilleures options pour construire un site Drupal car elles bénéficieront d’un support plus long. PHP 7 offre également d’importantes améliorations en termes de vitesse et de mise en cache.
PHP 5.5, 5.6 et 7.0 ont atteint leur fin de vie officielle fin 2018, et PHP 7.1 a atteint sa fin de vie le 1er décembre 2019. (Voir PHP : versions supportées pour plus d’informations.) Drupal 8 a abandonné le support de PHP 5.5 et 5.6 en mai 2019, et les versions récentes requièrent PHP 7.0.8 ou supérieur. Nous recommandons de mettre à jour au minimum vers PHP 7.2. (Ubuntu 18.04 est livré avec PHP 7.2, Debian stable avec PHP 7.3.)
Note : cela n’affecte pas Drupal 7, qui reste compatible avec PHP 5.2.4 et supérieur. Une annonce séparée sera publiée si cela change — voir Exigences PHP pour Drupal 7.
Extensions PHP requises
Les extensions utilisées par le noyau Drupal sont définies dans le fichier composer.json du noyau — par exemple, le fichier pour Drupal 8.7.x. Consultez la section « require » et les clés commençant par « ext- ».
Note : ajouter une extension PHP à votre système, au moins sous Linux (et Mac), signifie chercher et installer le paquet PHP correspondant via le gestionnaire de paquets. Généralement, le paquet d’une extension Foo s’appelle « php-foo » ou « php7-foo », mais ce n’est pas toujours le cas. Certaines extensions font partie du paquet PHP principal et sont donc activées par défaut.
Extensions de base de données
L’extension PHP Data Objects (PDO) doit être activée pour une installation et un fonctionnement corrects de Drupal 8. La version PDO pour PECL n’est pas compatible avec Drupal 8 et ne peut pas être utilisée. De plus, l’extension PHP correspondant à la base de données choisie doit être installée et activée.
Les connecteurs de bases de données actuellement supportés par Drupal sont : mysql (extension MySQL originale), mysqli (connecteur amélioré pour les installations MySQL plus récentes) et pgsql (pour PostgreSQL). Note : PHP 5.x n’inclut plus par défaut l’extension mysql. Veuillez consulter les liens ci-dessus pour installer et activer le connecteur choisi. Généralement, si vous installez PDO avec support MySQL, le bon connecteur est déjà sélectionné pour vous.
Extension XML
L’extension PHP XML est utilisée pour les API de blog, modules Drupal et Ping. Cette extension est activée par défaut dans une installation standard de PHP ; la version Windows de PHP l’intègre nativement. Activer l’extension XML active aussi PHP DOM, qui est maintenant une exigence système.
Bibliothèque de traitement d’images
Une bibliothèque d’images PHP, comme GD, est une extension obligatoire pour Drupal 8, nécessaire pour manipuler les images (redimensionnement des images utilisateur, modules d’images et cache d’images). ImageMagick est aussi supporté pour des manipulations basiques dans le noyau Drupal, mais avec beaucoup moins de support pour les modules additionnels.
OpenSSL
L’extension PHP OpenSSL est recommandée pour permettre à Drupal de faire des requêtes sortantes via HTTPS. Certaines plateformes proposent un paquet OpenSSL séparé, comme php7-OpenSSL.
Un travail est également en cours pour vérifier que le module Update Manager utilise HTTPS pour rechercher des mises à jour, ce qui rendrait cette recommandation encore plus stricte, voire obligatoire. Voir les tickets #1538118 et la discussion https://groups.drupal.org/node/506128.
JSON
Drupal 8 nécessite une version de PHP compilée avec JSON. Le support JSON est généralement compilé dans le noyau PHP, mais si vous obtenez des erreurs telles que :
PHP Fatal error: Call to undefined function Drupal\\Component\\Serialization\\json_encode() in ... core/lib/Drupal/Component/Serialization/Json.php
essayez d’ajouter l’extension JSON.
cURL
L’extension PHP cURL est requise pour le module SimpleTest dans Drupal 8, ainsi que pour Aggregator et certains modules additionnels. Elle est souvent activée par défaut sur de nombreuses distributions Linux et environnements de développement, mais si votre système ne l’active pas dans php.ini (souvent sous Windows) ou ne l’installe pas via un gestionnaire de paquets (souvent sous Linux), il faudra le faire manuellement.
Mbstring
L’extension PHP mbstring fournit des fonctions spécifiques pour gérer les chaînes multioctets, utilisées pour l’installation de Drupal en langues autres que l’anglais, ainsi que pour les sites multilingues. Elle facilite le traitement des encodages multioctets en PHP, notamment Unicode (UTF-8, UCS-2, etc.).
Configurations PHP
Exigences de mémoire
Les besoins en mémoire PHP peuvent varier grandement selon les modules utilisés sur votre site. La mémoire minimale requise est de 64 Mo.
Des messages d’alerte apparaîtront si votre configuration PHP ne répond pas à ces exigences. Toutefois, bien que ces valeurs puissent suffire pour une installation Drupal de base, un site de production avec plusieurs modules couramment utilisés nécessitera généralement plus de mémoire, souvent 128 Mo ou 256 Mo. Certaines installations, notamment celles avec beaucoup de médias, peuvent avoir besoin de beaucoup plus. Si vous utilisez un hébergement, assurez-vous que votre hébergeur peut fournir suffisamment de mémoire pour vos modules actuels et futurs. (Voir la page Augmenter la limite mémoire PHP dans la FAQ dépannage pour plus d’informations.)
Configurations dans .htaccess
Certaines configurations mémoire sont définies dans le fichier .htaccess par défaut fourni avec Drupal, vous n’avez donc pas besoin de les configurer explicitement. Cependant, notez que la configuration PHP via .htaccess fonctionne uniquement si :
- Vous utilisez Apache (ou un serveur compatible)
- Le fichier .htaccess est effectivement lu, c’est-à-dire que AllowOverride All est activé dans la configuration principale d’Apache (habituellement httpd.conf)
- PHP est installé comme module Apache
Dans certains environnements mutualisés, ces réglages sont limités. Si vous ne pouvez pas faire ces modifications vous-même, demandez à votre hébergeur de les configurer.
Autres interfaces PHP
Voir le manuel PHP pour savoir comment modifier les configurations pour d’autres interfaces PHP.
Xdebug
Si vous utilisez Xdebug :
Configuration : xdebug.show_exception_trace = 0
Raison : cela peut provoquer l’échec de l’installateur Drupal.
Utilisation de Xdebug avec Drupal 8 :
Configuration : xdebug.collect_params = ?
Raison : une valeur trop élevée de xdebug.collect_params empêchera l’installation et le fonctionnement de Drupal 8.
Configuration : xdebug.max_nesting_level = 256
Raison : la valeur par défaut de max_nesting_level, qui est 100 (dans les versions d’Xdebug 2.3), provoque des erreurs sur certaines pages.
PHP provenant de différentes sources
Drupal est conçu pour fonctionner avec PHP distribué via PHP.net. Des efforts sont faits pour qu’il fonctionne avec des versions PHP issues d’autres sources, mais cela reste au mieux un effort d’adaptation. En particulier, il est connu que Suhosin casse certaines fonctionnalités ; et certains systèmes d’exploitation déplacent des composants principaux dans d’autres paquets.
Détails des exigences PHP
Voir la page phpinfo() sur Drupal.org pour apprendre à utiliser Phpinfo et obtenir des informations détaillées sur votre système. Phpinfo vous dira par exemple si vous avez déjà une base de données installée et quelles versions de PHP, MySQL, etc., fonctionnent sur votre système. Il vous indiquera aussi quelles variables PHP sont configurées, et bien plus encore.
Il est souvent possible de mettre à jour vers une version plus récente de PHP fournie avec votre distribution Linux. Veuillez consulter la documentation de votre distribution Linux.
Quelques points importants
Gardez en tête les limitations de PHP 32-bit.
Les dépendances Drupal basées sur Composer sont empaquetées avec PHP 5.5.9. Si vous utilisez une version plus récente de PHP, vous pouvez exécuter la commande de mise à jour Composer pour obtenir des versions plus adaptées des dépendances.
Le gestionnaire de mises à jour Drupal 8 peut installer/mettre à jour les modules et thèmes via SSH, si les bibliothèques nécessaires sont présentes sur le serveur (sur Debian, le paquet est « libssh2-php »).
Si le cache opcode APC est utilisé avec Drupal 8, il nécessite APC 3.1.13 ou supérieur.
Si l’opcache intégré est activé, la configuration opcache.save_comments doit être activée (valeur 1 par défaut), sinon les annotations ne seront pas conservées ou chargées.