PHP Erweiterte Lebenszyklusunterstützung: Ein genauerer Blick
PHP Extended Lifecycle Support bietet Sicherheitsupdates und -versionen, wenn Sie daran interessiert sind, die Kompatibilität mit bestehendem PHP-Code aufrechtzuerhalten und gleichzeitig gegen die neuesten Sicherheitslücken auf Sprachebene geschützt zu sein.
PHP Extended Lifecycle Support ist ebenfalls eine sehr flexible Lösung und bietet Ihnen die Möglichkeit, verschiedene PHP-Versionen nebeneinander auf demselben System laufen zu lassen. So können Sie z. B. verschiedene Websites problemlos auf unterschiedlichen PHP-Versionen laufen lassen.
Schauen wir uns an, wie dies erreicht wird.
Wenn Sie eine aktualisierte Version von PHP über PHP ELS mit dem regulären Update-Tool Ihres Systems (yum, dnf, apt) bereitstellen, wird die neue Version unter "/opt/alt/php[Version]/" installiert. Dies bedeutet, dass alle Module, Konfigurationen und zusätzlichen Dateien, die zu dieser Version gehören, in diesem Pfad enthalten sind. Verschiedene PHP-Versionen haben jeweils ihren eigenen Pfad und können ohne Probleme auf demselben System koexistieren. Nachfolgend finden Sie den Ort aller relevanten Dateien, falls Sie Änderungen vornehmen möchten.
Die bin Dateien:
[root@localhost ~]# ll /opt/alt/php[version]/usr/bin/
bytekit hphpa pear pecl phar.phar
phpcb php-config phpcpd phploc phpunit-skelgen
dbunit lsphp peardev phar php
php-cgi phpcov phpize phpunit ppw
Module und pecl-Erweiterungen:
ls /opt/alt/php[version]/usr/lib64/php/modules/
ZendGuardLoader.so imagick.so oci8.so stem.so
amqp.so imap.so odbc.so stomp.so
apc.so inclued.so opcache.so suhosin.so
apcu.so inotify.so pdf.so sybase_ct.so
apm.so interbase.so pdo.so sysvmsg.so
ares.so intl.so pdo_dblib.so sysvsem.so
bcmath.so ioncube_loader.so pdo_firebird.so sysvshm.so
big_int.so ixed.5.4.lin pdo_mysql.so tideways.so
bitset.so jsmin.so pdo_oci.so tidy.so
brotli.so json.so pdo_odbc.so timezonedb.so
bz2_filter.so ldap.so pdo_pgsql.so trader.so
dba.so libevent.so pdo_sqlite.so translit.so
dbase.so libsodium.so pgsql.so uploadprogress.so
dbx.so luasandbox.so phalcon.so uri_template.so
dom.so lzf.so phar.so uuid.so
doublemetaphone.so mailparse.so posix.so wddx.so
eaccelerator.so mbstring.so propro.so weakref.so
eio.so mcrypt.so pspell.so xcache.so
enchant.so memcache.so quickhash.so xcache_3.so
fileinfo.so memcached.so radius.so xdebug.so
functional.so mongo.so raphf.so xhprof.so
gd.so mongodb.so rar.so xmlreader.so
gender.so msgpack.so recode.so xmlrpc.so
geoip.so mssql.so redis.so xmlwriter.so
geos.so mysql.so rsync.so xrange.so
gmagick.so mysqli.so snmp.so xsl.so
gnupg.so mysqlnd.so soap.so yaf.so
haru.so ncurses.so sockets.so yaml.so
hidef.so nd_mysql.so solr.so yaz.so
htscanner.so nd_mysqli.so spl_types.so zip.so
http.so nd_pdo_mysql.so ssh2.so zmq.so
igbinary.so oauth.so stats.so
Ausführen von Code in einer bestimmten Version über die CLI:
[root@localhost ~]# /opt/alt/php[version]/usr/bin/php helloworld.php
Hello, World!
Speicherort der ini-Konfigurationsdateien :
[root@localhost ~]# ls /opt/alt/php[version]/etc/php.d.all/
40-leveldb.ini mailparse.ini redis.ini
40-snuffleupagus.ini mbstring.ini rrd.ini
40-vld.ini mcrypt.ini snmp.ini
amqp.ini memcache.ini snuffleupagus-default.rules
apcu.ini memcached.ini soap.ini
bcmath.ini mongodb.ini sockets.ini
dba.ini mysqli.ini sodium.ini
dbase.ini mysqlnd.ini solr.ini
dom.ini nd_mysqli.ini sourceguardian.ini
eio.ini nd_pdo_mysql.ini sqlsrv.ini
enchant.ini newrelic.ini ssh2.ini
ffmpeg.ini oauth.ini stats.ini
fileinfo.ini oci8.ini swoole.ini
gd.ini odbc.ini sysvmsg.ini
gearman.ini opcache.ini sysvsem.ini
gender.ini pdf.ini sysvshm.ini
geoip.ini pdo.ini tideways_xhprof.ini
geos.ini pdo_dblib.ini tidy.ini
gmagick.ini pdo_firebird.ini timezonedb.ini
gnupg.ini pdo_mysql.ini trader.ini
grpc.ini pdo_oci.ini uploadprogress.ini
http.ini pdo_odbc.ini uuid.ini
igbinary.ini pdo_pgsql.ini vips.ini
imagick.ini pdo_sqlite.ini xdebug.ini
imap.ini pdo_sqlsrv.ini xmlreader.ini
inotify.ini pgsql.ini xmlrpc.ini
intl.ini phalcon4.ini xmlwriter.ini
ioncube_loader.ini phar.ini xsl.ini
jsmin.ini posix.ini yaml.ini
json.ini propro.ini yaz.ini
ldap.ini pspell.ini zip.ini
luasandbox.ini psr.ini zmq.ini
lzf.ini raphf.ini
Speicherort der Datei default.ini:
ls /opt/alt/php[version]/etc/php.d/default.ini
Auflistung aktivierter Module für eine bestimmte Version:
[root@localhost ~]# /opt/alt/php73/usr/bin/php -m
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
exif
filter
ftp
gettext
gmp
hash
iconv
libxml
openssl
pcntl
pcre
readline
Reflection
session
shmop
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
zlib
[Zend Modules]
Aktivieren eines Moduls über die CLI:
[root@localhost ~]# /opt/alt/php73/usr/bin/php -d "extension=igbinary.so" -m
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
exif
filter
ftp
gettext
gmp
hash
iconv
igbinary
libxml
openssl
pcntl
pcre
readline
Reflection
session
shmop
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
zlib
[Zend Modules]
Jede Version ist völlig eigenständig, und eine Änderung der Konfiguration in einer Version wirkt sich nicht auf die anderen aus, was in Hosting-Umgebungen eine gewünschte Funktion ist.
Wir würden uns über Ihr Feedback und Ihre Vorschläge freuen, wie wir den PHP Extended Lifecycle Support verbessern können, um Ihren Bedürfnissen oder Anwendungsfällen besser gerecht zu werden.
