Heim >Backend-Entwicklung >PHP-Tutorial >So führen Sie mehrere Versionen von PHP auf einem Server aus
In diesem speziellen Beitrag werden wir eine Lösung für die Installation mehrerer Versionen von Phalcon und PHP demo demo demo demo wir auf einem einzelnen Webserver. PHP 5.5.x und 5.6.x werden hier verwendet, aber Sie können sie durch andere Versionen ersetzen. Alle Server, die PHP-FPM unterstützen, sollten ausreichen, wir empfehlen jedoch, Nginx zu verwenden. Die in diesem Tutorial verwendete Umgebung ist Fedora OS - ein Linux -System, aber die Anweisungen sind für jedes andere *Nix OS.
fast identischInstallieren von nginx
Dann erstellen wir die Systemstart -Links für Nginx und starten sie
sudo yum install nginx
bauen php
sudo chkconfig nginx on sudo service nginx start
gcc oder eine andere Compiler -Suite.
Dann müssen wir seinen Quellcode erhalten. Es gibt zwei Möglichkeiten, dies zu tun: Sie können entweder ein Archiv von der Downloadseite von PHP herunterladen oder das Git -Repository von Github klonen.
sudo yum install gcc libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel bison gcc make
Wir empfehlen, den Quellcode von Git zu überprüfen, da Sie eine einfache Möglichkeit bieten, Ihre Installation auf dem neuesten Stand zu halten und Ihren Code mit verschiedenen Versionen auszuprobieren. Eine Git -Checkout ist auch erforderlich, wenn Sie Patches einreichen oder Anfragen für PHP abrufen möchten.
Um das Repository zu klonen, führen Sie die folgenden Befehle in Ihrem Terminal aus:
sudo yum install nginx
standardmäßig befinden Sie sich in der Master -Filiale. Wenn Sie also zu einer Entwicklungsversion wechseln möchten, müssen Sie sich die stabile Filiale ansehen. Zum Beispiel.
sudo chkconfig nginx on sudo service nginx start
Bevor wir zu den einzelnen Build -Schritten gehen, müssen wir einige Befehle für einen Standard -PHP -Build ausführen. Dies ist nur für Builds aus Git erforderlich.
sudo yum install gcc libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel bison gcc make
./ BuildConf generiert das Konfigurationsskript. Dies kann einige Minuten dauern.
Meiner Meinung nach ist es am besten, den gesamten Webserver in einem einzigen Verzeichnis zu speichern. Öffnen Sie den Terminal und geben Sie den folgenden Befehl ein.
sudo mkdir /opt/source && cd /opt/source git clone git@github.com:php/php-src.git && cd php-src
Sobald das Skript ./Configure über den obigen Schritt generiert wird, können Sie es verwenden, um Ihr PHP -Build anzupassen. Sie können alle unterstützten Optionen mit –help:
auflisten<span> PHP 5.3: git checkout PHP-5.3 </span><span> PHP 5.4: git checkout PHP-5.4 </span><span> PHP 5.6: git checkout PHP-5.6 </span><span> PHP HEAD: git checkout master </span>
In dem obigen Befehl werden verschiedene generische Optionen aufgeführt, die von allen autoconf-basierten Konfigurationsskripten unterstützt werden. Einer von ihnen ist bereits erwähnt - Prefix = dir, das das durch Made Installation verwendete Installationsverzeichnis ändert. Eine weitere nützliche Option ist -c, die das Ergebnis verschiedener Tests in der Datei config.cache zwischenspeichert und nachfolgend ./Configure -Anrufe beschleunigen. Die Verwendung dieser Option ist nur sinnvoll, sobald Sie bereits über einen Arbeitsbau verfügen und schnell zwischen verschiedenen Konfigurationen ändern möchten.
Hier sind einige nützliche Einstellungen:
sudo ./buildconf
Nach Abschluss der Vorbereitung installieren wir die PHP -Version 5.6. Führen Sie Folgendes aus:
sudo mkdir -p /opt/php-5.6 sudo mkdir -p /opt/php-5.5
Der letzte Switch (–Enable-fpm) funktioniert diese PHP-Version mit PHP-FPM. Wenn Sie diese PHP-FPM-Version mit Apache verwenden möchten, verwenden Sie bitte-with-fpm-user = apache und--with-fpm-group = apache. Wenn Sie diese PHP-FPM-Version mit Nginx verwenden möchten, verwenden Sie bitte-with-fpm-user = nginx und-with-fpm-gruppen = nginx.
Eine erfolgreiche Nachricht sollte im Terminal wie SO gedruckt werden:
./configure --help
Jetzt können Sie Make verwenden, um die tatsächliche Zusammenstellung durchzuführen:
[...] Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] [...]
Das Hauptergebnis dieser Operation sind PHP-Binärdateien für die aktivierten SAPIs (standardmäßig SAPI/CLI/PHP und SAPI/CGI/PHP-CGI) sowie gemeinsame Erweiterungen in den Modulen/Verzeichnissen.
.Jetzt können Sie "Installation" ausführen, um PHP in /usr /local (Standard) oder andere Verzeichnisse mit der Konfiguration -Prefix zu installieren. In diesem Fall ist es /opt/php-5.6
./configure \ --prefix=/opt/php-5.6 \ --with-pdo-pgsql \ --with-zlib-dir \ --with-freetype-dir \ --enable-mbstring \ --with-libxml-dir=/usr \ --enable-soap \ --enable-calendar \ --with-curl \ --with-mcrypt \ --with-zlib \ --with-gd \ --with-pgsql \ --disable-rpath \ --enable-inline-optimization \ --with-bz2 \ --with-zlib \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-pcntl \ --enable-mbregex \ --with-mhash \ --enable-zip \ --with-pcre-regex \ --with-mysql \ --with-pdo-mysql \ --with-mysqli \ --with-png-dir=/usr \ --enable-gd-native-ttf \ --with-openssl \ --with-fpm-user=nginx \ --with-fpm-group=nginx \ --with-libdir=lib64 \ --enable-ftp \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --with-gd \ --with-jpeg-dir=/usr/lib/ --enable-fpm
Bitte beachten Sie, dass die Installation keine INI -Datei erstellt.
[...] creating libtool appending configuration tag "CXX" to libtool Generating files configure: creating ./config.status creating main/internal_functions.c creating main/internal_functions_cli.c +--------------------------------------------------------------------+ | License: | | This software is subject to the PHP License, available in this | | distribution in the file LICENSE. By continuing this installation | | process, you are bound by the terms of this license agreement. | | If you do not agree with the terms of this license, you must abort | | the installation process at this point. | +--------------------------------------------------------------------+ Thank you for using PHP. config.status: creating php5.spec config.status: creating main/build-defs.h config.status: creating scripts/phpize config.status: creating scripts/man1/phpize.1 config.status: creating scripts/php-config config.status: creating scripts/man1/php-config.1 config.status: creating sapi/cli/php.1 config.status: creating sapi/fpm/php-fpm.conf config.status: creating sapi/fpm/init.d.php-fpm config.status: creating sapi/fpm/php-fpm.service config.status: creating sapi/fpm/php-fpm.8 config.status: creating sapi/fpm/status.html config.status: creating sapi/cgi/php-cgi.1 config.status: creating ext/phar/phar.1 config.status: creating ext/phar/phar.phar.1 config.status: creating main/php_config.h config.status: executing default commands
kopieren Sie php.ini und php-fpm.conf in das richtige Verzeichnis:
make
Wir überprüfen und überprüfen die PHP -Version noch einmal.
sudo yum install nginx
öffnen /opt/php-5.6/etc/php-fpm.conf und passen Sie die Einstellungen in der Listenzeile an. Sie müssen in einen ungenutzten Port umwandeln (z. B. 9001; der Port 9000 kann von Fedora verwendet werden)
sudo chkconfig nginx on sudo service nginx start
sudo yum install gcc libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel bison gcc make
Sie möchten wahrscheinlich ein Init-Skript für Ihren neuen PHP-FPM erstellen. Glücklicherweise liefert PHP 5.3 es bereits für Sie. Kopieren Sie das Init -Skript einfach in Ihr Verzeichnis und ändern Sie die Berechtigungen:
sudo mkdir /opt/source && cd /opt/source git clone git@github.com:php/php-src.git && cd php-src
Ihr Init -Skript ist bereit. Jetzt können Sie Php-FPM starten, anhalten und neu laden:
<span> PHP 5.3: git checkout PHP-5.3 </span><span> PHP 5.4: git checkout PHP-5.4 </span><span> PHP 5.6: git checkout PHP-5.6 </span><span> PHP HEAD: git checkout master </span>
Wir öffnen den Terminal und geben den folgenden Befehl ein.
sudo ./buildconf
Um mehrere Versionen von Phalcon einschließlich Phalcon 2.0 zu installieren, müssen wir Zephir
installierensudo mkdir -p /opt/php-5.6 sudo mkdir -p /opt/php-5.5
Es gibt viele Möglichkeiten, PHP -Erweiterungen zu installieren. Wir werden Phpize Build It verwenden.
Phpize spielt eine ähnliche Rolle wie das für PHP -Builds verwendete Skript. Unter diesen Dateien befinden sich Acinclude.m4 (M4-Macros von PHP), phpize.m4 (die in Ihrer Erweiterung in Ihrer Erweiterung umbenannt werden und die Hauptbauanweisungen enthält) und run-tests.php.
Anschließend ruft Phpize AutoConf auf, um eine ./Configure -Datei zu generieren, mit der der Erweiterungsaufbau angepasst werden kann. Wie beispielsweise die Installationsmemcached müssen Sie hinzufügen-anable Memcache.
Erinnere dich! Sie müssen die Option-mit Php-Konfiguration beim Erstellen der Erweiterungen angeben (es sei denn, Sie haben nur eine einzige globale Installation von PHP). Andernfalls kann. Darüber hinaus stellt das Php-Config-Skript sicher, dass der Befehl „Installieren“ die generierte *.so-Datei in das richtige Erweiterungsverzeichnis verschiebt.
./configure --help
Bitte überprüfen Sie, ob es erfolgreich ist
[...] Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] [...]
nach der Installation der Erweiterung. Sie müssen es noch aktivieren, indem Sie es in die Php.ini -Datei aufnehmen.
./configure \ --prefix=/opt/php-5.6 \ --with-pdo-pgsql \ --with-zlib-dir \ --with-freetype-dir \ --enable-mbstring \ --with-libxml-dir=/usr \ --enable-soap \ --enable-calendar \ --with-curl \ --with-mcrypt \ --with-zlib \ --with-gd \ --with-pgsql \ --disable-rpath \ --enable-inline-optimization \ --with-bz2 \ --with-zlib \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-pcntl \ --enable-mbregex \ --with-mhash \ --enable-zip \ --with-pcre-regex \ --with-mysql \ --with-pdo-mysql \ --with-mysqli \ --with-png-dir=/usr \ --enable-gd-native-ttf \ --with-openssl \ --with-fpm-user=nginx \ --with-fpm-group=nginx \ --with-libdir=lib64 \ --enable-ftp \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --with-gd \ --with-jpeg-dir=/usr/lib/ --enable-fpm
[...] creating libtool appending configuration tag "CXX" to libtool Generating files configure: creating ./config.status creating main/internal_functions.c creating main/internal_functions_cli.c +--------------------------------------------------------------------+ | License: | | This software is subject to the PHP License, available in this | | distribution in the file LICENSE. By continuing this installation | | process, you are bound by the terms of this license agreement. | | If you do not agree with the terms of this license, you must abort | | the installation process at this point. | +--------------------------------------------------------------------+ Thank you for using PHP. config.status: creating php5.spec config.status: creating main/build-defs.h config.status: creating scripts/phpize config.status: creating scripts/man1/phpize.1 config.status: creating scripts/php-config config.status: creating scripts/man1/php-config.1 config.status: creating sapi/cli/php.1 config.status: creating sapi/fpm/php-fpm.conf config.status: creating sapi/fpm/init.d.php-fpm config.status: creating sapi/fpm/php-fpm.service config.status: creating sapi/fpm/php-fpm.8 config.status: creating sapi/fpm/status.html config.status: creating sapi/cgi/php-cgi.1 config.status: creating ext/phar/phar.1 config.status: creating ext/phar/phar.phar.1 config.status: creating main/php_config.h config.status: executing default commands
wir überprüfen erneut, um sicherzustellen, dass die Installation erfolgreich ist
make
sudo make install
Die folgende Konfiguration erstellt zwei Server: Die Phalcon-Prd.LocalHost läuft auf PHP 5.5.x und Phalcon-dev.localHost funktioniert mit PHP 5.6.x. Dies ist ein Beispiel. Sie können es an alles anpassen, was Sie wollen, siehe Nginx -Dokumentation
/opt/php-5.6/bin/php --ini Configuration File (php.ini) Path: /opt/php-5.6/lib Loaded Configuration File: (none) Scan for additional .ini files in: (none) Additional .ini files parsed: (none)
Wenn Sie ein Linux -System verwenden, können Sie die Hostdatei bearbeiten:
sudo cp <span>/opt/source/php-src/php-fpm.conf.default /opt/php-5.6/etc/php-fpm.conf </span>sudo cp <span>/opt/source/php-src/php.ini-production /opt/php-5.6/lib/php.ini</span>
Die neue Host -Datei sieht aus.
/opt/php-5.6/bin/php --ini Configuration File (php.ini) Path: /opt/php-5.6/lib Loaded Configuration File: /opt/php-5.6/lib/php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none) ### Checking php /opt/php-5.6/bin/php --version PHP 5.6.2-dev (cli) (built: Oct 2 2014 17:20:23) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
Dieser fängt alle Anfragen für phalcon-dev.localhost und phalcon-prd.localhost an und sendet sie dann an Ihren Server.
Für das Testen erstellen wir eine neue Datei namens test.php und setzen sie in den Ordner ein, der der obigen Konfiguration von Nginx entspricht. In jeder Datei fügen wir den folgenden Befehl hinzu.
sudo yum install nginx
Ausführen der test.php-Datei in jedem Server sehen wir einen Phalcon 1.3.x phpinfo () unter http: //phancon-prd.localhost/test.php, während sie unter http: //phancon-dev.lokalhost /test.php Es sollte phpinfo () von phalcon 2.0.x.
geben
In diesem Tutorial haben wir gelernt, wie wir bei Bedarf leicht mehrere aktiv ausgeführte Versionen von PHP auf unserem Server haben können. Dies kann nützlich sein, wenn Sie gemeinsames Hosting durchführen oder wenn Sie alte Legacy -Apps unterstützen müssen, während Sie beispielsweise in der Lage sind, in der Lage zu sein.
Hinterlassen Sie Ihr Feedback in den Kommentaren unten und wie immer teilen Sie diesen Artikel, wenn Ihnen es gefallen hat!häufig gestellte Fragen zum Ausführen mehrerer PHP -Versionen auf einem Server
Wie kann ich PHPENV verwenden, um mehrere PHP-Versionen zu verwalten? Erforderliche PHP -Versionen. Anschließend können Sie den Befehl PHPENV verwenden, um zwischen verschiedenen PHP -Versionen zu wechseln. Sie können auch den Befehl PHPENV Global verwenden, um die globale PHP -Version und den Befehl PHPENV lokal festzulegen, um die lokale PHP -Version für ein bestimmtes Verzeichnis festzulegen.
Wie kann ich eine bestimmte PHP -Version auf meinem Server installieren? Durch die Verwendung des APT-Get-Installationsbefehls gefolgt vom Paketnamen für die gewünschte PHP-Version. Um beispielsweise PHP 7.2 zu installieren, werden Sie den Befehl APT-Get ausführen. Installieren Sie Php7.2.
Das obige ist der detaillierte Inhalt vonSo führen Sie mehrere Versionen von PHP auf einem Server aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!