Je m'appelle phpenv. J'ai été conçu pour les humains, afin de simplifier la gestion de plusieurs installations de build personnalisées PHP.
À l'origine, j'ai été inspiré par le travail exceptionnel des deux projets que vous connaissez et aimez déjà, avec tout un tas d'ajouts centrés sur PHP pour vous aider à créer votre première version, simplifier la gestion et l'utilisation de différentes versions et vous permettre de créer nouvelle version après nouvelle version. comme s'il n'y avait rien à faire.
Vous êtes un développeur PHP, comme nous, et vous devez non seulement disposer de l'interprète le plus récent et le plus récent pour exécuter vos scripts, mais vous vous souciez également de voir comment ils sont traités lorsqu'ils sont soumis à des interprétations plus anciennes. Vous êtes-vous déjà demandé pourquoi vous ne pouvez pas exécuter une application PHP sur votre propre machine de développement ? Eh bien, vous venez de trouver la réponse lorsque vous êtes allé faire un tour en construisant PHP sur leurs machines de développement. Personnalisez facilement vos options de configuration et créez même des extensions pecl en PHP ou manuellement par la suite. Configurez et installez des versions personnalisées de la même version de PHP directement à partir du référentiel de code source PHP conservé dans votre dossier .phpenv
local.
phpenv fonctionne sur le répertoire par utilisateur ~/.phpenv
. Les noms de versions dans phpenv correspondent aux sous-répertoires de ~/.phpenv/versions
. Par exemple, vous pourriez avoir ~/.phpenv/versions/5.3.8
et ~/.phpenv/versions/5.4.0
.
Chaque version est un arbre de travail avec ses propres binaires, comme ~/.phpenv/versions/5.4.0/bin/php
et ~/.phpenv/versions/5.3.8/bin/pyrus
. phpenv crée des binaires shim pour chacun de ces binaires sur toutes les versions installées de PHP.
Ces shims sont de simples scripts wrapper qui résident dans ~/.phpenv/shims
et détectent la version de PHP que vous souhaitez utiliser. Ils insèrent le répertoire de la version sélectionnée au début de votre $PATH
puis exécutent le binaire correspondant.
En raison de la simplicité de l'approche shim, tout ce dont vous avez besoin pour utiliser phpenv est ~/.phpenv/shims
dans votre $PATH
qui effectuera automatiquement le changement de version.
Pour une installation plus automatisée, vous pouvez utiliser phpenv-installer. Si vous préférez une approche manuelle, suivez les étapes ci-dessous.
Cela vous permettra d'utiliser la dernière version de phpenv et facilitera la création et la contribution de modifications en amont.
Découvrez phpenv dans ~/.phpenv
.
$ git clone [email protected]:phpenv/phpenv.git ~/.phpenv
Ajoutez ~/.phpenv/bin
à votre $PATH
pour accéder à l'utilitaire de ligne de commande phpenv
.
$ echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
Ajoutez phpenv init à votre shell pour activer les cales et la saisie semi-automatique.
$ echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
Redémarrez votre shell pour que les modifications de chemin prennent effet. Vous pouvez maintenant commencer à utiliser PHPenv.
$ exec $SHELL -l
(Facultatif) Installez-y php-build et n'importe quel fichier php. (Voir php-build home)
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
$ phpenv install [any php version]
(Facultatif) Reconstruisez les fichiers binaires de cale. Vous devriez le faire chaque fois que vous installez un nouveau binaire PHP.
$ phpenv rehash
Si vous avez installé PHPenv en suivant les instructions ci-dessus, vous pouvez mettre à niveau votre installation à tout moment en utilisant git.
Pour mettre à niveau vers la dernière version de développement de PHPenv, utilisez git pull
:
$ cd ~/.phpenv
$ git pull
Par défaut, php-build compilera PHP avec un ensemble d'options par défaut spécifié par :
Généralement, si vous devez spécifier comment PHP est construit sur votre système, vous pouvez ajouter des options de configuration dans la variable PHP_BUILD_CONFIGURE_OPTS
et ajouter des extensions PHP dans la variable PHP_BUILD_INSTALL_EXTENSION
.
La manière préférée de connecter des applications PHPenv consiste à utiliser php-fpm après avoir construit php. Votre serveur Web peut ensuite être configuré pour se connecter à l'instance php-fpm. Dans cette approche, php s'exécutera avec les autorisations de l'utilisateur appelant, ce qui n'est pas nécessairement le cas du serveur Web.
php-fpm peut être démarré de l'une des manières suivantes :
~/.phpenv/versions/$VERSION/etc/init.d/php-fpm
~/.phpenv/versions/$VERSION/etc/systemd/system/php-fpm.service
php-fpm (8)
et en fournissant des arguments de ligne de commande Par défaut, php-fpm est livré avec un fichier de configuration sous ~/.phpenv/versions/$VERSION/etc/php-fpm.conf
, qu'il recherchera lors de son exécution. Ceci configure php-fpm pour écouter sur localhost:9000
au démarrage. Vous pouvez modifier ou remplacer ce fichier, ou fournir un fichier de configuration différent à l'aide de l'argument de ligne de commande --fpm-config
( -y
).
Instructions pour connecter différents serveurs Web à php-fpm :
Alternativement, vous pouvez toujours utiliser le module Apache php en configurant php-build pour construire l'extension Apache libphp.so (instructions à suivre). libphp.so peut alors être trouvé par Apache dans le dossier ~/.phpenv/versions/$VERSION/libexec
. Ce fichier peut être utilisé pour la directive LoadModule php5_module
d'Apache et nécessite qu'Apache redémarre lorsqu'il est modifié.
Ignorez cette section, sauf si vous devez savoir ce que fait chaque ligne de votre profil shell.
phpenv init
est la seule commande qui franchit la ligne de chargement de commandes supplémentaires dans votre shell. Voici ce que fait réellement phpenv init
:
Configure le chemin de vos cales. C’est la seule condition requise pour que PHPenv fonctionne correctement. Vous pouvez également le faire manuellement en ajoutant ~/.phpenv/shims
à votre $PATH
.
Installe la saisie semi-automatique. Ceci est entièrement facultatif mais très utile. Sourcing ~/.phpenv/completions/phpenv.bash
configurera cela. Il existe également un ~/.phpenv/completions/phpenv.zsh
pour les utilisateurs de Zsh.
Refaites les cales. De temps en temps, vous devrez reconstruire vos fichiers shim. Faire cela sur init garantit que tout est à jour. Vous pouvez toujours exécuter phpenv rehash
manuellement.
Installe le répartiteur sh. Ce bit est également facultatif, mais permet à Phpenv et aux plugins de modifier les variables de votre shell actuel, rendant ainsi possibles des commandes comme phpenv shell
. Le répartiteur sh ne fait rien de fou comme remplacer cd
ou pirater l'invite de votre shell, mais si pour une raison quelconque vous avez besoin que phpenv
soit un vrai script plutôt qu'une fonction shell, vous pouvez l'ignorer en toute sécurité.
Exécutez phpenv init -
pour voir exactement ce qui se passe sous le capot.
Comme git
, la commande phpenv
délègue aux sous-commandes en fonction de son premier argument. Les sous-commandes les plus courantes sont :
Montrez l'utilisation et l'aide utile. Quand tu as des ennuis, fais ceci ;)
$ phpenv help
$ phpenv help <subcommand>
php-build est un plugin compatible PHPenv qui construit et installe php. Pour pouvoir utiliser phpenv install, téléchargez et installez le plugin php-build comme décrit à l'étape 5. des instructions d'installation ci-dessus.
Avant d'exécuter l'installation de PHPenv, assurez-vous que les versions de développement nécessaires à la création de PHP sont installées sur votre système. En particulier, si vous souhaitez créer l'extension Apache, assurez-vous qu'Apache2-dev (ou l'équivalent de votre système d'exploitation) est installé.
Définit la version globale de PHP à utiliser dans tous les shells en écrivant le nom de la version dans le fichier ~/.phpenv/version
. Cette version peut être remplacée par un fichier .phpenv-version
par projet ou en définissant la variable d'environnement PHPENV_VERSION
.
$ phpenv global 5.4.0
Le system
de nom de version spécial indique à phpenv d'utiliser le système PHP (détecté en recherchant votre $PATH
).
Lorsqu'il est exécuté sans numéro de version, phpenv global
indique la version globale actuellement configurée.
Définit une version PHP locale par projet en écrivant le nom de la version dans un fichier .phpenv-version
dans le répertoire actuel. Cette version remplace le global et peut être remplacée elle-même en définissant la variable d'environnement PHPENV_VERSION
ou avec la commande phpenv shell
.
$ phpenv local 5.3.8
Lorsqu'il est exécuté sans numéro de version, phpenv local
indique la version locale actuellement configurée. Vous pouvez également supprimer la version locale :
$ phpenv local --unset
Définit une version PHP spécifique au shell en définissant la variable d'environnement PHPENV_VERSION
dans votre shell. Cette version remplace les versions spécifiques au projet et la version globale.
$ phpenv shell 5.3.9
Lorsqu'il est exécuté sans numéro de version, phpenv shell
signale la valeur actuelle de PHPENV_VERSION
. Vous pouvez également supprimer la version shell :
$ phpenv shell --unset
Notez que vous aurez besoin d'activer l'intégration du shell de phpenv (étape 3 des instructions d'installation) pour pouvoir utiliser cette commande. Si vous préférez ne pas utiliser l'intégration shell, vous pouvez simplement définir vous-même la variable PHPENV_VERSION
:
$ export PHPENV_VERSION=5.3.13
Répertorie toutes les versions de PHP connues par phpenv et affiche un astérisque à côté de la version actuellement active.
$ phpenv versions
5.2.8
5.3.13
* 5.4.0 (set by /YOUR-USERNAME/.phpenv/global)
Affiche la version PHP actuellement active, ainsi que des informations sur la façon dont elle a été définie.
$ phpenv version
5.4.0 (set by /YOUR-USERNAME/.phpenv/version)
Installe des cales pour tous les binaires PHP connus de phpenv (c'est-à-dire ~/.phpenv/versions/*/bin/*
). Exécutez cette commande après avoir installé une nouvelle version de PHP.
$ phpenv rehash
Affiche le chemin complet du binaire que phpenv exécutera lorsque vous exécuterez la commande donnée.
$ phpenv which pyrus
/YOUR-USERNAME/.phpenv/versions/5.4.0/bin/pyrus
Le code source de phpenv est hébergé sur GitHub. C'est propre, modulaire et facile à comprendre (grâce au projet rbenv), même si vous n'êtes pas un hacker shell.
Ce projet est essentiellement un clone (lire : "rechercher et remplacer") du projet rbenv. Il a besoin d'amour et de soutien. Si vous souhaitez l'améliorer, n'hésitez pas à fork, à soumettre des demandes d'extraction et à signaler des bogues sur le système de suivi des problèmes.
(La licence MIT)
Copyright (c) 2012 Dominique Giglio
Copyright (c) 2013 Nick Lombard
Copyright (c) 2015 madumlao
L'autorisation est accordée par la présente, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), d'utiliser le Logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion. , publier, distribuer, accorder des sous-licences et/ou vendre des copies du Logiciel, et permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du logiciel.
LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, DÉLIT OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.