Im September 2025 stimmte die PHP-Community dafür, PIE, den PHP Installer for Extensions, künftig als bevorzugten Installationsweg für Erweiterungen zu empfehlen. Der Praxistest verwendete PIE 1.5.2, baute eine echte Erweiterung und entfernte sie anschließend wieder. PIE wird als PHAR verteilt und installiert kompilierte Erweiterungen in einer PHP-Installation. Die Pakete kommen aus der Erweiterungsregistrierung von Packagist.

terminal
pie repository:add path /path/to/pieh
pie info demo/pieh
pie install demo/pieh

PIE lädt den Quellcode herunter, führt phpize, configure und make aus, kopiert die erzeugte .so-Datei in das PHP-Erweiterungsverzeichnis und schreibt die Einstellung extension= in die Konfiguration. Unter Windows werden vorkompilierte DLL-Pakete verwendet. Dort ist kein Compiler nötig. Grundlage ist das RFC „Recommend PIE and deprecate PECL“. Es erhielt 36 Ja-Stimmen, keine Gegenstimme und 5 Enthaltungen. Die Änderung betrifft nur Empfehlung und Dokumentation. PECL funktioniert weiter. Ein Abschalttermin wurde nicht festgelegt. Für die Entfernung des PECL-Werkzeugs oder der PECL-Website wäre ein weiteres RFC erforderlich.

Für PIE selbst ist PHP 8.1 oder neuer erforderlich. Eine Erweiterung kann auch für eine andere PHP-Version installiert werden. Die PHAR-Datei steht auf der GitHub-Releases-Seite bereit. Das README beschreibt außerdem die Prüfung des Downloads mit `gh attestation verify --owner php pie.phar`. `pie check-build-tools` prüft die lokale Build-Umgebung. Im Test waren make, autoconf, pkg-config, libtool, unzip und phpize vorhanden. Die Dokumentation nennt für Linux und macOS zusätzlich git, automake, m4, gcc sowie das Entwicklungspaket der Zielversion, das phpize bereitstellt.

Die Pakete verwenden Namen im Composer-Stil mit Hersteller und Paket. Xdebug heißt daher `xdebug/xdebug`. Kompatible Pakete stehen unter `packagist.org/extensions`. Das Binary von PIE 1.5.2 enthält auch Befehle für Suche und Updates. Die gelesene Dokumentation verweist für die Suche weiterhin auf die Packagist-Liste und empfiehlt für Updates einen erneuten Aufruf von `pie install`. Die verfügbaren Befehle sollten zur installierten Version passen.

Packagist war in der Testumgebung nicht erreichbar. Deshalb diente eine kleine lokale Erweiterung mit einer Funktion als Beispiel. Ihre `composer.json` enthielt `"type": "php-ext"`; ein Path-Repository stellte sie für PIE bereit. Der Ablauf bestand aus `pie repository:add path /path/to/pieh`, `pie info demo/pieh` und `pie install demo/pieh`. PIE fand `demo/pieh:0.1.0`, erkannte `ext-pieh`, führte phpize und configure mit `/usr/bin/php-config` aus, baute `modules/pieh.so` und installierte die Datei als `/usr/lib/php/20230831/pieh.so` für `/usr/bin/php8.3`.

Die Erweiterung erschien in `php -m`, und ihre Funktion lief. PIE legte außerdem eine CLI-Datei in `conf.d` an. Sie enthielt einen Hinweis auf die automatische Aktivierung, die Priorität 80 und `extension=pieh`. `pie show` meldete `pieh:0.1.0` aus `demo/pieh:0.1.0`. Beim Deinstallieren verschwanden die .so-Datei und das Modul aus `php -m`. Die INI-Datei blieb jedoch bestehen. PIE kommentierte die Einstellung als `; extension=pieh ; removed by PIE` aus. So bleiben mögliche lokale Änderungen erhalten. Konfigurationswerkzeuge müssen solche Dateien bei Bedarf selbst bereinigen.

Für nicht interaktive CI-Läufe gibt es `--auto-install-build-tools` und `--auto-install-system-dependencies`. Das README dokumentiert außerdem `--select`, etwa `--select redis=phpredis/phpredis` für Projektabhängigkeiten. Das Docker-Beispiel der Dokumentation nutzt `php:8.4-cli`, bindet PIE für einen Build-Schritt aus `ghcr.io/php/pie:bin` ein, installiert `unzip`, führt `pie install --no-cache asgrim/example-pie-extension` aus und entfernt anschließend Paket und APT-Metadaten. Ein Multi-Stage-Build hält Compiler und andere Build-Werkzeuge aus dem finalen Image heraus.

Ab PIE 1.4.0 kann das Werkzeug fehlende Build-Abhängigkeiten zur Installation anbieten. Bei mehreren PHP-Versionen dienen `--with-php-config=/usr/bin/php-config8.2` und bei Bedarf ein passender `--with-phpize-path` zur Auswahl. Jeder Befehl zeigt vor der Bestätigung die Zielinstallation an. Das Erweiterungsverzeichnis benötigt normalerweise erhöhte Rechte. Der Test lief als root, und die Dokumentation enthält keine sudo-Anleitung.

Ein PECL-Paket muss PIE-kompatible Metadaten besitzen und auf Packagist veröffentlicht sein. Fehlt ein Paket, kann der Maintainer darum gebeten oder ein VCS-Repository mit `pie repository:add vcs <url>` eingebunden werden. Konfigurationsoptionen sind auf die von der Erweiterung deklarierten Werte beschränkt. `pie info vendor/package` zeigt sie an. Autoren benötigen `"type": "php-ext"` oder für Zend-Erweiterungen `php-ext-zend`. Der optionale Block `php-ext` kann unter anderem `extension-name`, `configure-options`, `build-path` und `os-families` enthalten. Das Beispiel enthielt zusätzlich Name, Lizenz und PHP-Anforderung.

PECL wurde in PHP 8.5 nicht entfernt. PIE richtet sich an Erweiterungen außerhalb der PHP-Distribution. Gebündelte Module wie mysqli und gd werden weiterhin über Distributionspakete oder Docker mit `docker-php-ext-install` installiert. Composer verwaltet Bibliotheken eines Projekts. PIE verwaltet kompilierte Erweiterungen der PHP-Installation.