PHP Lifecycle 연장 지원: 자세히 살펴보기
PHP Lifecycle 연장 지원은 최신 언어 수준의 취약성에 대한 보안을 유지하면서 기존 PHP 코드와의 호환성을 유지하고자 하는 경우 보안 업데이트 및 버전을 제공합니다.
PHP Lifecycle 연장 지원은 또한 매우 유연한 솔루션으로, 동일한 시스템에서 여러 버전의 PHP를 나란히 실행할 수 있는 기능을 제공합니다. 예를 들어 여러 개의 웹사이트를 문제 없이 서로 다른 PHP 버전 위에서 실행할 수 있습니다.
이를 달성하는 방법을 살펴보겠습니다.
시스템의 정기 업데이트 도구(yum, dnf, apt)를 사용하여 PHP ELS를 통해 업데이트된 버전의 PHP를 배포하면 새 버전이 "/opt/alt/php[version]/" 아래에 설치됩니다. 즉, 이 버전과 관련된 모든 모듈, 구성 및 추가 파일이 해당 경로에 포함됩니다. 서로 다른 버전의 PHP는 각각 고유한 경로를 가지며 동일한 시스템에서 문제 없이 공존할 수 있습니다. 아래에서 변경하려는 경우 모든 관련 파일의 위치를 확인할 수 있습니다.
The bin 파일:
[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
모듈 및 페클 확장:
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
CLI를 통해 특정 버전에서 코드 실행:
[root@localhost ~]# /opt/alt/php[version]/usr/bin/php helloworld.php
Hello, World!
ini 설정 파일의 위치:
[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
default.ini의 위치:
ls /opt/alt/php[version]/etc/php.d/default.ini
특정 버전에서 활성화된 모듈을 나열합니다:
[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]
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]
각 버전은 완전히 독립적이며, 한 버전에서 구성을 변경해도 다른 버전에 영향을 미치지 않으므로 호스팅 환경에서 원하는 기능입니다.
여러분의 요구 사항이나 사용 사례를 더 잘 해결하기 위해 PHP Lifecycle 연장 지원을 개선할 수 있는 방법에 대한 여러분의 피드백과 제안을 듣고 싶습니다.