본문 바로가기

리눅스

[draft] PHP 8.1에서 MongoDB 확장 모듈을 업그레이드하는 방법

PHP 8.1에서 MongoDB 확장 모듈을 업그레이드하는 방법

테스트 환경

운영체제 버전 정보

$ cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

PHP 버전 정보 확인

$ php --version
PHP 8.1.23 (cli) (built: Aug 30 2023 08:23:26) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.23, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.23, Copyright (c), by Zend Technologies

MongoDB 확장 모듈 버전 정보 확인

php -i | egrep "MongoDB support|MongoDB extension"
MongoDB support => enabled
MongoDB extension version => 1.13.0
MongoDB extension stability => stable

PEAR 패키지의 버전 정보를 확인

pear list -a
$ pear list -a
Installed packages, channel __uri:
==================================
(no packages installed)

Installed packages, channel doc.php.net:
========================================
(no packages installed)

Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.4.14  stable
Console_Getopt   1.4.3   stable
PEAR             1.10.13 stable
PEAR_Manpages    1.10.0  stable
Structures_Graph 1.1.1   stable
XML_Util         1.4.5   stable

Installed packages, channel pecl.opendogs.org:
==============================================
(no packages installed)

Installed packages, channel pecl.php.net:
=========================================
Package  Version State
igbinary 3.2.14  stable
mcrypt   1.0.6   stable
mongodb  1.13.0  stable
rdkafka  6.0.1   stable
redis    5.3.7   stable
zip      1.22.2  stable

MongoDB 확장 모듈 다운로드

mongodb

MongoDB 확장 모듈 업그레이드

/usr/local/src 디렉토리로 이동

cd /usr/local/src

MongoDB PECL 확장 모듈 다운로드

wget https://pecl.php.net/get/mongodb-1.16.2.tgz

압축 해제

tar xfz mongodb-1.16.2.tgz

다운로드 받은 디렉토리로 이동

cd mongodb-1.16.2

PHP 확장 모듈을 빌드하기 위해 phpize 실행

/bin/phpize

빌드 구성

./configure --with-php-config=/bin/php-config

빌드하고 설치

make -j$(nproc) && make install -j$(nproc)
$ make -j$(nproc) && make install -j$(nproc)
...
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/src/mongodb-1.16.2/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/lib64/php/modules/

MongoDB 모듈 교체

MongoDB 모듈 백업(mongodb 1.13.0)

mv /usr/lib64/php/modules/mongodb.so /usr/lib64/php/modules/mongodb_1.13.0.so

MongoDB 모듈 추가(mongodb 1.16.2)

cp /usr/local/src/mongodb-1.16.2/modules/mongodb.so /usr/lib64/php/modules/mongodb.so
php -i | egrep "MongoDB support|MongoDB extension"

MongoDB 모듈 확인-1

$ php -i | egrep "MongoDB support|MongoDB extension" 
MongoDB support => enabled
MongoDB extension version => 1.16.2
MongoDB extension stability => stable

MongoDB 모듈 확인-2

$ php -m | egrep -i MongoDB
mongodb