Ce qui se passe
PIE (PHP Installer for Extensions) gère les extensions du runtime PHP. Sa version 1.5, annoncée le 7 octobre par
la PHP Foundation, est détaillée le 2 novembre par Laravel News. Le point à connaître avant de monter de version :
l'option --allow-non-interactive-project-install, qui laissait PIE choisir seul les paquets lors d'une
installation sans interaction, est désormais dépréciée et sans effet.
Pourquoi ça compte
Lancé sans argument dans un projet, pie install lit les extensions déclarées dans composer.json
("ext-redis": "*" par exemple). Une entrée ext-* déclare une exigence, elle n'installe rien. En 1.5, si une
extension manque et qu'aucun paquet n'est désigné, l'installation non interactive échoue : le problème apparaîtra
donc au premier build qui utilise la 1.5.
Comment s'y prendre
Nommer le paquet de chaque extension manquante avec --select, au format extension=vendeur/paquet (nom d'extension
sans le préfixe ext-) :
pie install --no-interaction --no-dev \
--select=redis=phpredis/phpredis--no-devignore les exigences d'extensions derequire-dev(ici Xdebug) pendant la vérification du projet. Il ne désinstalle rien, et ne remplace pascomposer install --no-dev.- Pour un environnement de développement qui a besoin des deux :
pie install --no-interaction \
--select=redis=phpredis/phpredis \
--select=xdebug=xdebug/xdebug- Ces commandes supposent que PIE et les outils de compilation sont présents ; PIE ne les installe pas seul en mode
non interactif. La nouvelle commande
pie check-build-toolsaide à le vérifier avant. - Une commande qui nomme déjà son paquet, comme
pie install phpredis/phpredis, n'est pas concernée.
Les autres nouveautés
pie upgrademet à jour les extensions installées par PIE, en respectant la contrainte de version enregistrée à l'installation (pie install 'phpredis/phpredis:^6.0'reste en 6.x) et en conservant les options de configure. Il ne touche ni Laravel ni le dossiervendor.- Plusieurs extensions en une commande :
pie install phpredis/phpredis xdebug/xdebug. pie searchpour retrouver un nom de paquet ; bibliothèque de vérification d'attestations mise à jour.
Pull requests : #633 (--select), #710
et #673 (--no-dev), #666
(upgrade), #642 et #674.
À retenir
Relire les Dockerfiles et scripts de build qui appellent pie install sans nom de paquet, et y ajouter les
--select manquants avant la montée en 1.5.
Source : Laravel News, qui renvoie aux notes de version 1.5.0. Source en anglais.