Mein Name ist phpenv. Ich wurde für Menschen entwickelt, um die Verwaltung mehrerer benutzerdefinierter PHP-Build-Installationen zu vereinfachen.
Ich wurde ursprünglich von der herausragenden Arbeit beider Projekte inspiriert, die Sie bereits kennen und lieben, mit einer ganzen Reihe von PHP-zentrierten Ergänzungen, die Ihnen beim Erstellen Ihres ersten Release helfen, die Verwaltung und Arbeit mit verschiedenen Releases vereinfachen und Sie beim Erstellen eines neuen Release nach dem anderen unterstützen als wäre da nichts dran.
Sie sind wie wir ein PHP-Entwickler und benötigen nicht nur den neuesten und aktuellsten Interpreter, um Ihre Skripte zu erstellen, sondern möchten auch sehen, wie sie behandelt werden, wenn sie älteren Interpretationen unterzogen werden. Haben Sie sich jemals gefragt, warum Sie eine PHP-App nicht auf Ihrem eigenen Entwicklungscomputer ausführen können? Nun, Sie haben gerade die Antwort gefunden, als Sie versucht haben, PHP auf ihren Entwicklungsmaschinen zu entwickeln. Passen Sie Ihre Konfigurationsoptionen ganz einfach an und bauen Sie Pecl-Erweiterungen sogar in PHP oder manuell nachträglich ein. Konfigurieren und installieren Sie benutzerdefinierte Builds derselben PHP-Release-Version direkt aus dem PHP-Quellcode-Repository, das in Ihrem lokalen .phpenv
Ordner gespeichert ist.
phpenv arbeitet mit dem benutzerspezifischen Verzeichnis ~/.phpenv
. Versionsnamen in phpenv entsprechen Unterverzeichnissen von ~/.phpenv/versions
. Beispielsweise könnten Sie ~/.phpenv/versions/5.3.8
und ~/.phpenv/versions/5.4.0
haben.
Jede Version ist ein Arbeitsbaum mit eigenen Binärdateien, wie ~/.phpenv/versions/5.4.0/bin/php
und ~/.phpenv/versions/5.3.8/bin/pyrus
. phpenv erstellt Shim-Binärdateien für jede dieser Binärdateien in allen installierten PHP-Versionen.
Bei diesen Shims handelt es sich um einfache Wrapper-Skripte, die in ~/.phpenv/shims
gespeichert sind und erkennen, welche PHP-Version Sie verwenden möchten. Sie fügen das Verzeichnis für die ausgewählte Version am Anfang Ihres $PATH
ein und führen dann die entsprechende Binärdatei aus.
Aufgrund der Einfachheit des Shim-Ansatzes benötigen Sie zur Verwendung von phpenv lediglich ~/.phpenv/shims
in Ihrem $PATH
, wodurch der Versionswechsel automatisch erfolgt.
Für eine automatisiertere Installation können Sie den phpenv-installer verwenden. Wenn Sie einen manuellen Ansatz bevorzugen, befolgen Sie die folgenden Schritte.
Dadurch können Sie mit der neuesten Version von phpenv loslegen und alle Änderungen ganz einfach forken und im Upstream einbringen.
Schauen Sie sich phpenv in ~/.phpenv
an.
$ git clone [email protected]:phpenv/phpenv.git ~/.phpenv
Fügen Sie ~/.phpenv/bin
zu Ihrem $PATH
hinzu, um auf das Befehlszeilendienstprogramm phpenv
zuzugreifen.
$ echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
Fügen Sie phpenv init zu Ihrer Shell hinzu, um Shims und automatische Vervollständigung zu aktivieren.
$ echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
Starten Sie Ihre Shell neu, damit die Pfadänderungen wirksam werden. Sie können jetzt mit der Verwendung von phpenv beginnen.
$ exec $SHELL -l
(Optional) Installieren Sie php-build darin und alle PHP-Dateien. (Siehe PHP-Build-Home)
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
$ phpenv install [any php version]
(Optional) Erstellen Sie die Shim-Binärdateien neu. Sie sollten dies jedes Mal tun, wenn Sie eine neue PHP-Binärdatei installieren.
$ phpenv rehash
Wenn Sie phpenv mithilfe der obigen Anweisungen installiert haben, können Sie Ihre Installation jederzeit mit git aktualisieren.
Um auf die neueste Entwicklungsversion von phpenv zu aktualisieren, verwenden Sie git pull
:
$ cd ~/.phpenv
$ git pull
Standardmäßig kompiliert php-build PHP mit einem Standardsatz von Optionen, die durch Folgendes festgelegt werden:
Wenn Sie angeben müssen, wie PHP auf Ihrem System erstellt wird, können Sie normalerweise Konfigurationsoptionen in der Variablen PHP_BUILD_CONFIGURE_OPTS
und PHP-Erweiterungen in der Variablen PHP_BUILD_INSTALL_EXTENSION
hinzufügen.
Die bevorzugte Methode zum Verbinden von PHPENV-Anwendungen ist die Verwendung von PHP-FPM nach dem Erstellen von PHP. Ihr Webserver kann dann so konfiguriert werden, dass er eine Verbindung zur PHP-FPM-Instanz herstellt. Bei diesem Ansatz wird PHP mit den Berechtigungen des aufrufenden Benutzers ausgeführt, bei dem es sich nicht unbedingt um den Webserver handelt.
php-fpm kann auf eine der folgenden Arten gestartet werden:
~/.phpenv/versions/$VERSION/etc/init.d/php-fpm
~/.phpenv/versions/$VERSION/etc/systemd/system/php-fpm.service
php-fpm (8)
und Angabe von Befehlszeilenargumenten Standardmäßig enthält php-fpm eine Konfigurationsdatei unter ~/.phpenv/versions/$VERSION/etc/php-fpm.conf
, nach der es bei der Ausführung sucht. Dadurch wird php-fpm so konfiguriert, dass es beim Start auf localhost:9000
lauscht. Sie können diese Datei bearbeiten oder ersetzen oder mit dem Befehlszeilenargument --fpm-config
( -y
) eine andere Konfigurationsdatei bereitstellen.
Anleitung zum Anbinden verschiedener Webserver an PHP-FPM:
Alternativ können Sie weiterhin das Apache-PHP-Modul verwenden, indem Sie php-build so konfigurieren, dass die Apache-Erweiterung libphp.so erstellt wird (Anweisungen folgen). libphp.so kann dann von Apache im Ordner ~/.phpenv/versions/$VERSION/libexec
gefunden werden. Diese Datei kann für LoadModule php5_module
von Apache verwendet werden und erfordert einen Neustart von Apache, wenn sie geändert wird.
Überspringen Sie diesen Abschnitt, es sei denn, Sie müssen wissen, was jede Zeile in Ihrem Shell-Profil tut.
phpenv init
ist der einzige Befehl, der die Grenze zum Laden zusätzlicher Befehle in Ihre Shell überschreitet. Folgendes macht phpenv init
tatsächlich:
Richtet den Pfad Ihrer Unterlegscheiben ein. Dies ist die einzige Voraussetzung dafür, dass phpenv ordnungsgemäß funktioniert. Sie können dies auch manuell tun, indem Sie ~/.phpenv/shims
Ihrem $PATH
voranstellen.
Installiert die automatische Vervollständigung. Dies ist völlig optional, aber sehr nützlich. Durch die Beschaffung von ~/.phpenv/completions/phpenv.bash
wird dies eingerichtet. Es gibt auch eine ~/.phpenv/completions/phpenv.zsh
für Zsh-Benutzer.
Aufwärmen von Unterlegscheiben. Von Zeit zu Zeit müssen Sie Ihre Shim-Dateien neu erstellen. Wenn Sie dies auf init tun, stellen Sie sicher, dass alles auf dem neuesten Stand ist. Sie können phpenv rehash
jederzeit manuell ausführen.
Installiert den SH-Dispatcher. Dieses Bit ist ebenfalls optional, ermöglicht es phpenv und Plugins jedoch, Variablen in Ihrer aktuellen Shell zu ändern, wodurch Befehle wie phpenv shell
möglich werden. Der sh-Dispatcher macht keine verrückten Aktionen wie das Überschreiben von cd
oder das Hacken Ihrer Shell-Eingabeaufforderung. Wenn Sie jedoch aus irgendeinem Grund benötigen, dass phpenv
ein echtes Skript und keine Shell-Funktion ist, können Sie es getrost überspringen.
Führen Sie phpenv init -
um selbst genau zu sehen, was unter der Haube passiert.
Wie git
delegiert der Befehl phpenv
basierend auf seinem ersten Argument an Unterbefehle. Die häufigsten Unterbefehle sind:
Zeigen Sie die Verwendung und nützliche Hilfe an. Wenn Sie in Schwierigkeiten sind, tun Sie dies ;)
$ phpenv help
$ phpenv help <subcommand>
PHP-Build ist ein PHPENV-kompatibles Plugin, das PHP erstellt und installiert. Um phpenv install verwenden zu können, laden Sie das PHP-Build-Plugin herunter und installieren es, wie in Schritt 5 der obigen Installationsanweisungen beschrieben.
Bevor Sie phpenv install ausführen, stellen Sie sicher, dass die zum Erstellen von PHP erforderlichen Entwicklungsversionen auf Ihrem System installiert sind. Wenn Sie insbesondere die Apache-Erweiterung erstellen möchten, stellen Sie sicher, dass apache2-dev (oder das Äquivalent Ihres Betriebssystems) installiert ist.
Legt die globale Version von PHP fest, die in allen Shells verwendet werden soll, indem der Versionsname in die Datei ~/.phpenv/version
geschrieben wird. Diese Version kann durch eine projektspezifische .phpenv-version
Versionsdatei oder durch Festlegen der Umgebungsvariablen PHPENV_VERSION
überschrieben werden.
$ phpenv global 5.4.0
Das spezielle system
weist phpenv an, das System PHP zu verwenden (erkannt durch Durchsuchen Ihres $PATH
).
Bei Ausführung ohne Versionsnummer meldet phpenv global
die aktuell konfigurierte globale Version.
Legt eine lokale PHP-Version pro Projekt fest, indem der Versionsname in eine .phpenv-version
Datei im aktuellen Verzeichnis geschrieben wird. Diese Version überschreibt die globale Version und kann selbst überschrieben werden, indem die Umgebungsvariable PHPENV_VERSION
oder der phpenv shell
festgelegt wird.
$ phpenv local 5.3.8
Bei Ausführung ohne Versionsnummer meldet phpenv local
die aktuell konfigurierte lokale Version. Sie können die lokale Version auch deaktivieren:
$ phpenv local --unset
Legt eine Shell-spezifische PHP-Version fest, indem Sie die Umgebungsvariable PHPENV_VERSION
in Ihrer Shell festlegen. Diese Version überschreibt sowohl die projektspezifischen Versionen als auch die globale Version.
$ phpenv shell 5.3.9
Bei Ausführung ohne Versionsnummer meldet phpenv shell
den aktuellen Wert von PHPENV_VERSION
. Sie können die Shell-Version auch deaktivieren:
$ phpenv shell --unset
Beachten Sie, dass Sie die Shell-Integration von phpenv aktivieren müssen (Schritt 3 der Installationsanweisungen), um diesen Befehl verwenden zu können. Wenn Sie keine Shell-Integration verwenden möchten, können Sie die Variable PHPENV_VERSION
einfach selbst festlegen:
$ export PHPENV_VERSION=5.3.13
Listet alle PHP-Versionen auf, die phpenv bekannt sind, und zeigt ein Sternchen neben der aktuell aktiven Version an.
$ phpenv versions
5.2.8
5.3.13
* 5.4.0 (set by /YOUR-USERNAME/.phpenv/global)
Zeigt die aktuell aktive PHP-Version zusammen mit Informationen darüber an, wie sie eingestellt wurde.
$ phpenv version
5.4.0 (set by /YOUR-USERNAME/.phpenv/version)
Installiert Shims für alle PHP-Binärdateien, die phpenv bekannt sind (z. B. ~/.phpenv/versions/*/bin/*
). Führen Sie diesen Befehl aus, nachdem Sie eine neue Version von PHP installiert haben.
$ phpenv rehash
Zeigt den vollständigen Pfad zur Binärdatei an, die phpenv ausführt, wenn Sie den angegebenen Befehl ausführen.
$ phpenv which pyrus
/YOUR-USERNAME/.phpenv/versions/5.4.0/bin/pyrus
Der PHPENV-Quellcode wird auf GitHub gehostet. Es ist sauber, modular und leicht zu verstehen (dank des rbenv-Projekts), auch wenn Sie kein Shell-Hacker sind.
Dieses Projekt ist im Grunde ein Klon (sprich: „Suchen und Ersetzen“) des rbenv-Projekts. Es braucht Liebe und Unterstützung. Wenn Sie daran interessiert sind, es zu verbessern, können Sie gerne einen Fork durchführen, Pull-Requests einreichen und Fehler im Issue-Tracker melden.
(Die MIT-Lizenz)
Copyright (c) 2012 Dominic Giglio
Copyright (c) 2013 Nick Lombard
Copyright (c) 2015 madumlao
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, mit der Software ohne Einschränkung zu handeln, einschließlich und ohne Einschränkung der Rechte zur Nutzung, zum Kopieren, Ändern und Zusammenführen , Kopien der Software zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen und Personen, denen die Software zur Verfügung gestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHT-INHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, WEDER AUS EINER VERTRAGLICHEN HANDLUNG, AUS HANDLUNG ODER ANDERWEITIG, DIE SICH AUS, AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN IN DER SOFTWARE ERGEBEN SOFTWARE.