phpenv : gérer plusieurs builds PHP avec un simple outil en ligne de commande
Gestion simple des versions PHP. Vous êtes-vous déjà demandé pourquoi vous ne pouvez pas exécuter une application PHP sur votre propre machine de développement ?
En bref
- De quoi s’agit-il ?
- Un gestionnaire de versions qui utilise un fichier .php-version pour changer de PHP par projet, basé sur les idées de rbenv.
- À qui s’adresse-t-il ?
- Pour phpenv, l évaluation doit suivre la commande et les fichiers de configuration indiqués par le README. Testez plusieurs versions de PHP dans un répertoire temporaire, observez le binaire sélectionné et notez le comportement lorsque la version demandée manque.
- Puis-je l’utiliser commercialement ?
- Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Les derniers commits datent d’il y a 47 jours.
- En quel langage est-il écrit ?
- Principalement Shell, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 14 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Simplifier plusieurs builds PHP personnalisés
phpenv est un outil en ligne de commande pour installer et gérer plusieurs builds PHP sur une seule machine. Le README le décrit comme une « gestion simple de versions PHP » et dit qu'il a été conçu pour les humains. Le projet a été initialement inspiré par rbenv et ruby-build, avec des ajouts spécifiques à PHP pour construire des versions, gérer différentes versions et construire de nouvelles versions à répétition. La description dit qu'il vous aide à voir comment vos scripts se comportent sous des interpréteurs plus anciens et évite le problème d'une application PHP qui ne fonctionne pas sur votre propre machine de développement.
Pour phpenv, l évaluation doit suivre la commande et les fichiers de configuration indiqués par le README. Testez plusieurs versions de PHP dans un répertoire temporaire, observez le binaire sélectionné et notez le comportement lorsque la version demandée manque. Le résultat utile est la correspondance entre environnement, version et projet, pas une promesse générale de compatibilité. Repere 1: phpenv utilise la branche main pour ce contrôle.
Comment fonctionne la sélection de version
Après l'installation, phpenv s'injecte dans votre PATH afin que toute invocation de php, php-fpm ou d'autres exécutables PHP active d'abord phpenv. Il scanne ensuite le répertoire du projet actuel pour un fichier nommé .php-version. S'il est trouvé, ce fichier détermine la version PHP pour ce répertoire. phpenv recherche cette version parmi les installations sous ~/.phpenv/versions/. Chaque répertoire de version contient ses propres binaires, bibliothèques, fichiers de configuration et pages de manuel, y compris php, php-fpm, pecl, pyrus et php.ini. Vous définissez la version avec une commande comme `phpenv local 8.3.13`, qui écrit la version dans le fichier .php-version du répertoire courant. Différents projets peuvent utiliser différentes versions, et phpenv bascule lorsque vous changez de répertoire.
Pour phpenv, l évaluation doit suivre la commande et les fichiers de configuration indiqués par le README. Testez plusieurs versions de PHP dans un répertoire temporaire, observez le binaire sélectionné et notez le comportement lorsque la version demandée manque. Le résultat utile est la correspondance entre environnement, version et projet, pas une promesse générale de compatibilité. Repere 2: phpenv utilise la branche main pour ce contrôle.
Options d'installation et chemin de mise à niveau
Le README documente deux méthodes d'installation. La première utilise Homebrew sur macOS et Linux : `brew install phpenv/tap/phpenv`, puis ajoutez `eval "$(phpenv init -)"` à votre profil shell. La seconde est un checkout manuel depuis GitHub : clonez le dépôt dans ~/.phpenv, ajoutez ~/.phpenv/bin à votre PATH, ajoutez la ligne init, puis redémarrez votre shell. La construction de versions PHP nécessite le plugin php-build, installé comme plugin phpenv sous $(phpenv root)/plugins/php-build. Après l'installation d'un nouveau binaire PHP, vous devrez peut-être exécuter `phpenv rehash` pour reconstruire les binaires shim. Les mises à niveau se font avec git pull dans le répertoire ~/.phpenv.
Pour phpenv, l évaluation doit suivre la commande et les fichiers de configuration indiqués par le README. Testez plusieurs versions de PHP dans un répertoire temporaire, observez le binaire sélectionné et notez le comportement lorsque la version demandée manque. Le résultat utile est la correspondance entre environnement, version et projet, pas une promesse générale de compatibilité. Repere 3: phpenv utilise la branche main pour ce contrôle.
Choisir une version : globale, locale et shell
phpenv propose trois portées pour la sélection de version. `phpenv global` écrit la version dans ~/.phpenv/version et s'applique à tous les shells, sauf si elle est remplacée. `phpenv local` écrit un fichier .php-version dans le répertoire courant, remplaçant la version globale pour ce projet. `phpenv shell` définit la variable d'environnement PHPENV_VERSION pour le shell courant, remplaçant les deux. Chaque commande sans argument signale la version actuellement configurée. Le nom spécial `system` indique à phpenv d'utiliser le PHP trouvé dans votre PATH. Le README montre également `phpenv versions` pour lister toutes les versions connues avec un astérisque sur la version active, `phpenv version` pour afficher la version actuelle et sa source, `phpenv rehash` pour installer les shims pour tous les binaires PHP, et `phpenv which` pour afficher le chemin complet d'une commande donnée.
Pour phpenv, l évaluation doit suivre la commande et les fichiers de configuration indiqués par le README. Testez plusieurs versions de PHP dans un répertoire temporaire, observez le binaire sélectionné et notez le comportement lorsque la version demandée manque. Le résultat utile est la correspondance entre environnement, version et projet, pas une promesse générale de compatibilité. Repere 4: phpenv utilise la branche main pour ce contrôle.
Construire PHP et le connecter à un serveur web
Le README explique que php-build est un plugin compatible phpenv qui compile et installe PHP. Il utilise des options de configuration par défaut, des définitions par version et des variables d'environnement telles que PHP_BUILD_CONFIGURE_OPTS et PHP_BUILD_INSTALL_EXTENSION pour personnaliser la compilation. Pour l'intégration au serveur web, la méthode préférée est PHP-FPM : après avoir construit PHP, vous pouvez démarrer php-fpm depuis ~/.phpenv/versions/$VERSION/etc/init.d/php-fpm, via une unité systemd, ou manuellement. La configuration php-fpm par défaut écoute sur localhost:9000. Alternativement, vous pouvez construire le module Apache libphp.so via php-build et l'utiliser avec la directive LoadModule. Le README fournit des liens vers des articles wiki Apache et NGINX pour connecter php-fpm.
Pour phpenv, l évaluation doit suivre la commande et les fichiers de configuration indiqués par le README. Testez plusieurs versions de PHP dans un répertoire temporaire, observez le binaire sélectionné et notez le comportement lorsque la version demandée manque. Le résultat utile est la correspondance entre environnement, version et projet, pas une promesse générale de compatibilité. Repere 5: phpenv utilise la branche main pour ce contrôle.
Ce que fait phpenv init et les variables d'environnement
Le README contient une section « Neckbeard Configuration » détaillant exactement ce que fait `phpenv init -` : il configure le chemin des shims, installe l'autocomplétion (bash ou zsh), régénère les shims et installe un dispatcher shell qui permet aux plugins de modifier les variables shell. Vous pouvez exécuter `phpenv init -` pour voir la sortie. phpenv est également configurable via des variables d'environnement : PHPENV_VERSION spécifie la version, PHPENV_ROOT est par défaut ~/.phpenv, PHPENV_DEBUG active la sortie de débogage, PHPENV_HOOK_PATH liste les chemins de hooks, et PHPENV_DIR définit le répertoire de départ pour la recherche des fichiers .php-version.
Pour phpenv, l évaluation doit suivre la commande et les fichiers de configuration indiqués par le README. Testez plusieurs versions de PHP dans un répertoire temporaire, observez le binaire sélectionné et notez le comportement lorsque la version demandée manque. Le résultat utile est la correspondance entre environnement, version et projet, pas une promesse générale de compatibilité. Repere 6: phpenv utilise la branche main pour ce contrôle.
Désinstallation, développement et licence
Pour désactiver phpenv, supprimez la ligne `phpenv init` de votre configuration de démarrage shell ; cela arrête le changement de version. Pour une désinstallation complète, supprimez également le répertoire racine de phpenv, ce qui supprime toutes les versions PHP installées. Le code source est hébergé sur GitHub et les tests sont exécutés avec Bats. Le README dit que le projet est essentiellement un clone « rechercher et remplacer » de rbenv et qu'il a besoin de soutien ; il invite aux forks, pull requests et rapports de bugs. Le logiciel est sous licence MIT, qui accorde le droit d'utiliser, copier, modifier, fusionner, publier, distribuer, sous-licencier et vendre des copies, à condition d'inclure l'avis de droit d'auteur et de permission. La licence stipule que le logiciel est fourni « tel quel » sans garantie d'aucune sorte.
Pour phpenv, l évaluation doit suivre la commande et les fichiers de configuration indiqués par le README. Testez plusieurs versions de PHP dans un répertoire temporaire, observez le binaire sélectionné et notez le comportement lorsque la version demandée manque. Le résultat utile est la correspondance entre environnement, version et projet, pas une promesse générale de compatibilité. Repere 7: phpenv utilise la branche main pour ce contrôle.
Conclusion éditoriale
Pour phpenv, l évaluation doit suivre la commande et les fichiers de configuration indiqués par le README. Testez plusieurs versions de PHP dans un répertoire temporaire, observez le binaire sélectionné et notez le comportement lorsque la version demandée manque. Le résultat utile est la correspondance entre environnement, version et projet, pas une promesse générale de compatibilité. Ce projet s adresse aux lecteurs dont le besoin correspond exactement à phpenv ; il ne convient pas à une décision fondée sur des garanties absentes du dépôt.
Notes de la communauté