En septembre 2025, la communauté PHP a voté pour faire de PIE, le PHP Installer for Extensions, la méthode recommandée pour installer les extensions. Le test a utilisé PIE 1.5.2, avec la compilation d’une extension réelle puis sa désinstallation. PIE est distribué sous forme de PHAR et installe des extensions compilées dans une installation PHP. Les paquets proviennent du registre d’extensions de Packagist.
pie repository:add path /path/to/pieh
pie info demo/pieh
pie install demo/piehPIE télécharge les sources, lance phpize, configure et make, copie le fichier .so produit dans le répertoire d’extensions de PHP, puis ajoute le réglage extension= à la configuration. Sous Windows, l’outil utilise des paquets DLL précompilés et ne demande donc pas de compilateur. La décision suit la RFC « Recommend PIE and deprecate PECL ». Elle a obtenu 36 voix favorables, aucune voix défavorable et 5 abstentions. Elle modifie la recommandation et la documentation. PECL continue de fonctionner et aucune date de suppression n’a été fixée. Le retrait de l’outil ou du site PECL nécessiterait une autre RFC.
PIE nécessite PHP 8.1 ou une version ultérieure pour fonctionner. Il peut installer une extension destinée à une autre version de PHP. Le fichier PHAR est disponible sur la page des releases GitHub. Le README décrit aussi la vérification du téléchargement avec `gh attestation verify --owner php pie.phar`. La commande `pie check-build-tools` examine l’environnement de compilation. Le test a trouvé make, autoconf, pkg-config, libtool, unzip et phpize. La documentation ajoute git, automake, m4, gcc et le paquet de développement de la version PHP ciblée, celui qui fournit phpize, aux prérequis Linux et macOS.
Les paquets suivent la convention Composer vendor/package. Xdebug s’installe donc sous le nom `xdebug/xdebug`. Les paquets compatibles sont référencés sur `packagist.org/extensions`. Le binaire PIE 1.5.2 propose aussi des commandes de recherche et de mise à jour. La documentation consultée renvoie toujours vers la liste Packagist pour la recherche et recommande de relancer `pie install` pour une mise à jour. Il faut vérifier les commandes disponibles dans la version installée.
Packagist était inaccessible depuis l’environnement de test. L’exemple a donc utilisé une petite extension locale contenant une fonction. Son `composer.json` déclarait `"type": "php-ext"`, puis un dépôt de type path l’a rendue accessible à PIE. Le scénario a exécuté `pie repository:add path /path/to/pieh`, `pie info demo/pieh` et `pie install demo/pieh`. PIE a trouvé `demo/pieh:0.1.0`, identifié l’extension fournie `ext-pieh`, exécuté phpize et configure avec `/usr/bin/php-config`, compilé `modules/pieh.so`, puis installé le fichier dans `/usr/lib/php/20230831/pieh.so` pour `/usr/bin/php8.3`.
L’extension apparaissait dans `php -m` et sa fonction répondait correctement. PIE a aussi créé un fichier dans le `conf.d` de la CLI. Ce fichier indiquait l’activation automatique, la priorité 80 et la ligne `extension=pieh`. `pie show` affichait `pieh:0.1.0` provenant de `demo/pieh:0.1.0`. La désinstallation a supprimé le fichier .so et retiré l’extension de `php -m`, mais le fichier INI est resté. PIE a commenté la ligne sous la forme `; extension=pieh ; removed by PIE`. Cette conservation protège d’éventuelles modifications locales. Un outil de gestion de configuration devra supprimer le fichier résiduel si nécessaire.
Dans les environnements CI non interactifs, les options `--auto-install-build-tools` et `--auto-install-system-dependencies` permettent de répondre aux demandes de PIE. Le README documente aussi `--select`, par exemple `--select redis=phpredis/phpredis` pour les dépendances d’un projet. Le modèle Docker de la documentation utilise `php:8.4-cli`, monte PIE depuis `ghcr.io/php/pie:bin` pendant une étape de build, installe `unzip`, lance `pie install --no-cache asgrim/example-pie-extension`, puis supprime le paquet et les métadonnées APT. Un build multi-étape permet de ne pas conserver les outils de compilation dans l’image finale.
Depuis PIE 1.4.0, l’outil peut proposer l’installation des outils de compilation manquants. Avec plusieurs installations PHP, `--with-php-config=/usr/bin/php-config8.2` et, si besoin, un `--with-phpize-path` correspondant permettent de choisir la cible. Chaque commande affiche l’installation PHP ciblée avant la confirmation. Le répertoire d’extensions demande généralement des privilèges élevés. Le test a été effectué en root et la documentation ne donne pas de procédure sudo.
Un paquet PECL doit disposer de métadonnées compatibles avec PIE et être publié sur Packagist. Un paquet absent peut être signalé à son mainteneur ou fourni via un dépôt VCS avec `pie repository:add vcs <url>`. Les options de configuration se limitent à celles déclarées par l’extension. `pie info vendor/package` les affiche. Les auteurs doivent utiliser `"type": "php-ext"`, ou `php-ext-zend` pour une extension Zend. Le bloc optionnel `php-ext` accepte notamment `extension-name`, `configure-options`, `build-path` et `os-families`. Le manifeste de démonstration contenait aussi un nom, une licence et une contrainte PHP.
PECL n’a pas été supprimé dans PHP 8.5. PIE vise les extensions qui ne sont pas incluses dans PHP. Les modules intégrés comme mysqli et gd continuent de passer par les paquets de la distribution ou par `docker-php-ext-install` dans les images Docker. Composer gère les bibliothèques d’un projet. PIE gère les extensions compilées de l’installation PHP.




Commentaires
Pas encore de commentaire — écris le premier.
Lance la discussion
Pas de compte ni de mot de passe — saisis simplement ton adresse e-mail et nous t’envoyons un lien de connexion à usage unique. Première visite ? Tout se met en place automatiquement.
Ton évaluation sera appliquée automatiquement après ta connexion.
Vérifie ta boîte mail
Nous avons envoyé un lien de connexion à …. Ouvre-le sur cet appareil — cet onglet te connectera automatiquement.
Rien reçu ? Vérifiez le dossier spam — et marquez le message « Non spam » pour qu'il arrive directement la prochaine fois.