Чтобы работать с очередями IBM MQ с помощью PHP, необходимо установить библиотеку для PHP - mqseries. В настоящее время самая актуальная библиотека mqseries имеет версию 0.15.0 (beta) от 14 июля 2017. Предварительно необходимо установить IBM WebSphere MQ.

Установка расширения MQ для PHP – mqseries 

Исходные данные:

- виртуальный сервер с установленной операционной системой Linux Debian 10 x64;

- панель управления сервером ISP Manager Lite 5.

- нативная версия php7.3

- дополнительно установленные альтернативные версии php: 5.4, 7.1, 7.4.




 

Внимание! Установка mqseries для нативной версии php и альтернативных версий php отличается!

 

I. Установка mqseries для нативной версии php:

 

1. Установить (если его нет)autoconf:

 

root@myserver:/tmp/mqser# apt install autoconf

Reading package lists... Done 

Building dependency tree 

Reading state information... Done 

The following additional packages will be installed: 

 automake autotools-dev m4 

Suggested packages: 

 autoconf-archive gnu-standards autoconf-doc libtool gettext m4-doc 

The following NEW packages will be installed: 

 autoconf automake autotools-dev m4 

0 upgraded, 4 newly installed, 0 to remove and 115 not upgraded. 

Need to get 1,346 kB of archives. 

After this operation, 4,170 kB of additional disk space will be used. 

Do you want to continue? [Y/n] y 

Get:1 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 m4 amd64 1.4.18-1 [202 kB]

Get:2 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 autoconf all 2.69-10 [338 kB]

Get:3 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 autotools-dev all 20161112.1 [73.4 kB]

Get:4 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 automake all 1:1.15-6 [733 kB]

Fetched 1,346 kB in 2s (583 kB/s)

Selecting previously unselected package m4. 

(Reading database ... 55659 files and directories currently installed.) 

Preparing to unpack .../archives/m4_1.4.18-1_amd64.deb ... 

Unpacking m4 (1.4.18-1) ... 

Selecting previously unselected package autoconf. 

Preparing to unpack .../autoconf_2.69-10_all.deb ... 

Unpacking autoconf (2.69-10) ... 

Selecting previously unselected package autotools-dev. 

Preparing to unpack .../autotools-dev_20161112.1_all.deb ... 

Unpacking autotools-dev (20161112.1) ... 

Selecting previously unselected package automake. 

Preparing to unpack .../automake_1%3a1.15-6_all.deb ... 

Unpacking automake (1:1.15-6) ... 

Setting up m4 (1.4.18-1) ... 

Setting up autotools-dev (20161112.1) ... 

Processing triggers for man-db (2.7.6.1-2) ... 

Setting up autoconf (2.69-10) ... 

Setting up automake (1:1.15-6) ... 

update-alternatives: using /usr/bin/automake-1.15 to provide /usr/bin/automake (automake) in auto mode 

 

 

Если autoconf уже установлен, то сервер скажет об этом:

 

root@myserver:~# apt install autoconf

Чтение списков пакетов… Готово

Построение дерева зависимостей

Чтение информации о состоянии… Готово 

Уже установлен пакет autoconf самой новой версии (2.69-11). 

Следующие пакеты устанавливались автоматически и больше не требуются:

dbconfig-common dbconfig-mysql icc-profiles-free php php-auth-sasl php-bz2 php-curl php-gd php-gettext php-intl php-mail-mime php-mbstring php-mysql 

php-net-sieve php-net-smtp php-net-socket php-php-gettext php-phpseclib php-pspell php-tcpdf php-zip php7.3 php7.3-bz2 php7.3-curl php7.3-gd php7.3-intl 

php7.3-mbstring php7.3-mysql php7.3-pspell php7.3-zip roundcube-core roundcube-mysql

Для их удаления используйте «apt autoremove». 

Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 26 пакетов не обновлено. 

 

 

 2. Установить (если его нет) php-dev:

 

root@myserver:~# apt install php-dev

Reading package lists... Done 

Building dependency tree 

Reading state information... Done 

The following additional packages will be installed: 

 autopoint debhelper dh-autoreconf dh-php dh-strip-nondeterminism gettext intltool-debian libapache2-mod-php7.0 libarchive-zip-perl libcroco3 

 libexporter-tiny-perl libfile-stripnondeterminism-perl liblist-moreutils-perl libltdl-dev libmail-sendmail-perl libpcre16-3 libpcre3-dev libpcre32-3 

 libpcrecpp0v5 libssl-dev libssl-doc libssl1.1 libsys-hostname-long-perl libtool php7.0-bz2 php7.0-cgi php7.0-cli php7.0-common php7.0-curl php7.0-dev 

 php7.0-gd php7.0-intl php7.0-json php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-pspell php7.0-readline php7.0-xml php7.0-zip 

 pkg-php-tools po-debconf shtool xml2 

Suggested packages: 

 dh-make gettext-doc libasprintf-dev libgettextpo-dev libtool-doc gfortran | fortran95-compiler gcj-jdk libmail-box-perl 

The following NEW packages will be installed: 

 autopoint debhelper dh-autoreconf dh-php dh-strip-nondeterminism gettext intltool-debian libarchive-zip-perl libcroco3 libexporter-tiny-perl 

 libfile-stripnondeterminism-perl liblist-moreutils-perl libltdl-dev libmail-sendmail-perl libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libssl-dev 

 libssl-doc libsys-hostname-long-perl libtool php-dev php7.0-dev pkg-php-tools po-debconf shtool xml2 

The following packages will be upgraded: 

 libapache2-mod-php7.0 libssl1.1 php7.0-bz2 php7.0-cgi php7.0-cli php7.0-common php7.0-curl php7.0-gd php7.0-intl php7.0-json php7.0-mbstring php7.0-mcrypt 

 php7.0-mysql php7.0-opcache php7.0-pspell php7.0-readline php7.0-xml php7.0-zip 

18 upgraded, 28 newly installed, 0 to remove and 97 not upgraded. 

Need to get 16.4 MB of archives. 

After this operation, 33.9 MB of additional disk space will be used. 

Do you want to continue? [Y/n] y 

 

Get:1 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 libpcrecpp0v5 amd64 2:8.39-3 [151 kB]

Get:2 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 libssl1.1 amd64 1.1.0f-3+deb9u2 [1,344 kB]

Get:3 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 autopoint all 0.19.8.1-2 [433 kB]

Get:4 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 libtool all 2.4.6-2 [545 kB]

Get:5 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 dh-autoreconf all 14 [15.9 kB]

Get:6 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 libarchive-zip-perl all 1.59-1 [95.5 kB]

Get:7 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 libfile-stripnondeterminism-perl all 0.034-1 [16.4 kB]

Get:8 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 dh-strip-nondeterminism all 0.034-1 [10.5 kB]

Get:9 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 libcroco3 amd64 0.6.11-3 [143 kB]

Get:10 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 gettext amd64 0.19.8.1-2 [1,495 kB]

Get:11 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 intltool-debian all 0.35.0+20060710.4 [26.3 kB]

Get:12 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 po-debconf all 1.0.20 [247 kB]

Get:13 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 debhelper all 10.2.5 [961 kB]

Get:14 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 php7.0-mysql amd64 7.0.30-0+deb9u1 [124 kB]

Get:15 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 php7.0-bz2 amd64 7.0.30-0+deb9u1 [9,968 B]

Get:16 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 php7.0-intl amd64 7.0.30-0+deb9u1 [124 kB]

Get:17 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 php7.0-xml amd64 7.0.30-0+deb9u1 [112 kB]

Get:18 http://cdn-fastly.deb.debian.org/debian stretch/main amd64 php7.0-json amd64 7.0.30-0+deb9u1 [17.0 kB]

Setting up libfile-stripnondeterminism-perl (0.034-1) ... 

Setting up php7.0-mysql (7.0.30-0+deb9u1) ... 

Setting up liblist-moreutils-perl (0.416-1+b1) ... 

Setting up libpcre3-dev:amd64 (2:8.39-3) ... 

Setting up php7.0-readline (7.0.30-0+deb9u1) ... 

Setting up php7.0-opcache (7.0.30-0+deb9u1) ... 

Setting up php7.0-mbstring (7.0.30-0+deb9u1) ... 

Setting up gettext (0.19.8.1-2) ... 

Setting up libssl-dev:amd64 (1.1.0f-3+deb9u2) ... 

Setting up php7.0-gd (7.0.30-0+deb9u1) ... 

Setting up php7.0-mcrypt (7.0.30-0+deb9u1) ... 

Setting up php7.0-curl (7.0.30-0+deb9u1) ... 

Setting up php7.0-pspell (7.0.30-0+deb9u1) ... 

Setting up php7.0-zip (7.0.30-0+deb9u1) ... 

Setting up intltool-debian (0.35.0+20060710.4) ... 

Setting up php7.0-json (7.0.30-0+deb9u1) ... 

Setting up po-debconf (1.0.20) ... 

Setting up php7.0-cli (7.0.30-0+deb9u1) ... 

Setting up php7.0-dev (7.0.30-0+deb9u1) ... 

update-alternatives: using /usr/bin/php-config7.0 to provide /usr/bin/php-config (php-config) in auto mode 

update-alternatives: using /usr/bin/phpize7.0 to provide /usr/bin/phpize (phpize) in auto mode 

Setting up php-dev (1:7.0+49) ... 

Setting up php7.0-cgi (7.0.30-0+deb9u1) ... 

Setting up libapache2-mod-php7.0 (7.0.30-0+deb9u1) ... 

libapache2-mod-php7.0: not switching MPM - already enabled 

Setting up dh-autoreconf (14) ... 

Setting up debhelper (10.2.5) ... 

Setting up dh-php (0.26) ... 

Setting up pkg-php-tools (1.35) ... 

Setting up dh-strip-nondeterminism (0.034-1) ... 

Processing triggers for libc-bin (2.24-11+deb9u1) ... 

В процессе установки может быть обновлена версия php и может отобразиться сообщение, что файл или файлы php.ini отличаются. Это произойдет в том случае, если были изменены вручную некоторые директивы, например: post_max_size, upload_max_filesize и др. Логично в этом случае оставить измененные файлы, чтобы потом заново не редактировать их.

 

3. Скачать с сайта https://pecl.php.net/package/mqseries архив библиотеки mqseries - mqseries-0.15.0.tgz, загрузить его на сервер во временную папку, например, сюда: /tmp/mqser/ и распаковать. Получится директория /tmp/mqser/mqseries-0.15.0/с файлами:

Установка расширения MQ для PHP – mqseries

 

 4. Выяснить, где на сервере "живёт" phpize, и в каких ипостасях присутствует:

 

root@myserver:~# whereis phpize 

phpize: /usr/bin/phpize /usr/bin/phpize7.3 /opt/php56/bin/phpize /opt/php71/bin/phpize /opt/php54/bin/phpize /opt/php74/bin/phpize /usr/share/man/man1/phpize.1.gz
                                                                                                                                                   

Видим, что:

phpize для нативной версии php находится тут:  /usr/bin/phpize

phpize для альтернативной версии php7.4 находится тут: /opt/php74/bin/phpize

и др.

 




 

 

5. Перейти в папку с распакованной библиотекой mqseries:

root@myserver:~# cd /tmp/mqser/mqseries-0.15.0/

 

6. Подготовить окружение для расширения PHP (для нативной версии) с помощью команды phpize:

 

root@myserver:/tmp/mqser/mqseries-0.15.0# /usr/bin/phpize

Configuring for: 

PHP Api Version: 20180731 

Zend Module Api No:20180731

Zend Extension Api No: 320180731                                                                                                                          

root@myserver:/tmp/mqser/mqseries-0.15.0#

 

 

 7. Выполнить конфигурирование:

 

root@myserver:/tmp/mqser/mqseries-0.15.0# ./configure --with-libdir=lib64

checking for grep that handles long lines and -e... /usr/bin/grep

checking for egrep... /usr/bin/grep -E

checking for a sed that does not truncate output... /usr/bin/sed

checking for cc... cc

checking whether the C compiler works... yes

checking for C compiler default output file name... a.out 

checking for suffix of executables...

checking whether we are cross compiling... no 

checking for suffix of object files... o 

checking whether we are using the GNU C compiler... yes 

checking whether cc accepts -g... yes 

checking for cc option to accept ISO C89... none needed

checking how to run the C preprocessor... cc -E 

checking for icc... no 

checking for suncc... no 

checking whether cc understands -c and -o together... yes 

checking for system library directory... lib64 

checking if compiler supports -R... no

checking if compiler supports -Wl,-rpath,... yes

checking build system type... x86_64-pc-linux-gnu 

checking host system type... x86_64-pc-linux-gnu

checking target system type... x86_64-pc-linux-gnu

checking for PHP prefix... /usr

checking for PHP includes... -I/usr/include/php/20180731 -I/usr/include/php/20180731/main -I/usr/include/php/20180731/TSRM -I/usr/include/php/20180731/Zend -I/

usr/include/php/20180731/ext -I/usr/include/php/20180731/ext/date/lib 

checking for PHP extension directory... /usr/lib/php/20180731 

checking for PHP installed headers prefix... /usr/include/php/20180731

checking if debug is enabled... no 

checking if zts is enabled... no

checking for re2c... no

configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.

checking for gawk... gawk 

checking for mqseries support... yes, shared 

checking for mqseries files in default path... found in /opt/mqm

checking for MQCONN in -lmqic... yes

checking for MQSUB in -lmqic... yes

checking how to print strings... printf 

checking for a sed that does not truncate output... (cached) /usr/bin/sed 

checking for fgrep... /usr/bin/grep -F 

checking for ld used by cc... /usr/bin/ld 

checking if the linker (/usr/bin/ld) is GNU ld... yes

checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B 

checking the name lister (/usr/bin/nm -B) interface... BSD nm 

checking whether ln -s works... yes

checking the maximum length of command line arguments... 1572864

checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop

checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop 

checking for /usr/bin/ld option to reload object files... -r

checking for objdump... objdump

checking how to recognize dependent libraries... pass_all 

checking for dlltool... no

checking how to associate runtime and link libraries... printf %s\n

checking for ar... ar 

checking for archiver @FILE support... @

checking for strip... strip

checking for ranlib... ranlib 

checking for gawk... (cached) gawk 

checking command to parse /usr/bin/nm -B output from cc object... ok

checking for sysroot... no

checking for a working dd... /usr/bin/dd 

checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1

checking for mt... mt

checking if mt is a manifest tool... no

checking for ANSI C header files... yes 

checking for sys/types.h... yes

checking for sys/stat.h... yes

checking for stdlib.h... yes

checking for string.h... yes 

checking for memory.h... yes

checking for strings.h... yes

checking for inttypes.h... yes 

checking for stdint.h... yes

checking for unistd.h... yes 

checking for dlfcn.h... yes 

checking for objdir... .libs

checking if cc supports -fno-rtti -fno-exceptions... no

checking for cc option to produce PIC... -fPIC -DPIC

checking if cc PIC flag -fPIC -DPIC works... yes

checking if cc static flag -static works... yes

checking if cc supports -c -o file.o... yes 

checking if cc supports -c -o file.o... (cached) yes 

checking whether the cc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes 

checking whether -lc should be explicitly linked in... no 

checking dynamic linker characteristics... GNU/Linux ld.so 

checking how to hardcode library paths into programs... immediate 

checking whether stripping libraries is possible... yes 

checking if libtool supports shared libraries... yes 

checking whether to build shared libraries... yes 

checking whether to build static libraries... no 

configure: creating ./config.status 

config.status: creating config.h

config.status: executing libtool commands

 

8. Создать сборку командой make: 

 

root@myserver:~# cd /tmp/mqser/mqseries-0.15.0/

root@myserver:/tmp/mqser/mqseries-0.15.0# make

/bin/bash /tmp/mqser/mqseries-0.15.0/libtool --mode=compile cc-I. -I/tmp/mqser/mqseries-0.15.0 -DPHP_ATOM_INC -I/tmp/mqser/mqseries-0.15.0/include -I/tmp/mqs

er/mqseries-0.15.0/main -I/tmp/mqser/mqseries-0.15.0 -I/usr/include/php/20180731 -I/usr/include/php/20180731/main -I/usr/include/php/20180731/TSRM -I/usr/inclu

de/php/20180731/Zend -I/usr/include/php/20180731/ext -I/usr/include/php/20180731/ext/date/lib -I/opt/mqm/inc-DHAVE_CONFIG_H-g -O2 -c /tmp/mqser/mqseries-

0.15.0/mqseries.c -o mqseries.lo

libtool: compile:cc -I. -I/tmp/mqser/mqseries-0.15.0 -DPHP_ATOM_INC -I/tmp/mqser/mqseries-0.15.0/include -I/tmp/mqser/mqseries-0.15.0/main -I/tmp/mqser/mqser

ies-0.15.0 -I/usr/include/php/20180731 -I/usr/include/php/20180731/main -I/usr/include/php/20180731/TSRM -I/usr/include/php/20180731/Zend -I/usr/include/php/20

180731/ext -I/usr/include/php/20180731/ext/date/lib -I/opt/mqm/inc -DHAVE_CONFIG_H -g -O2 -c /tmp/mqser/mqseries-0.15.0/mqseries.c-fPIC -DPIC -o .libs/mqseri

es.o 

/bin/bash /tmp/mqser/mqseries-0.15.0/libtool --mode=compile cc-I. -I/tmp/mqser/mqseries-0.15.0 -DPHP_ATOM_INC -I/tmp/mqser/mqseries-0.15.0/include -I/tmp/mqs

er/mqseries-0.15.0/main -I/tmp/mqser/mqseries-0.15.0 -I/usr/include/php/20180731 -I/usr/include/php/20180731/main -I/usr/include/php/20180731/TSRM -I/usr/inclu

de/php/20180731/Zend -I/usr/include/php/20180731/ext -I/usr/include/php/20180731/ext/date/lib -I/opt/mqm/inc-DHAVE_CONFIG_H-g -O2 -c /tmp/mqser/mqseries-

0.15.0/mqseries_helper.c -o mqseries_helper.lo

libtool: compile:cc -I. -I/tmp/mqser/mqseries-0.15.0 -DPHP_ATOM_INC -I/tmp/mqser/mqseries-0.15.0/include -I/tmp/mqser/mqseries-0.15.0/main -I/tmp/mqser/mqser

ies-0.15.0 -I/usr/include/php/20180731 -I/usr/include/php/20180731/main -I/usr/include/php/20180731/TSRM -I/usr/include/php/20180731/Zend -I/usr/include/php/20

180731/ext -I/usr/include/php/20180731/ext/date/lib -I/opt/mqm/inc -DHAVE_CONFIG_H -g -O2 -c /tmp/mqser/mqseries-0.15.0/mqseries_helper.c-fPIC -DPIC -o .libs

/mqseries_helper.o 

/bin/bash /tmp/mqser/mqseries-0.15.0/libtool --mode=link cc -DPHP_ATOM_INC -I/tmp/mqser/mqseries-0.15.0/include -I/tmp/mqser/mqseries-0.15.0/main -I/tmp/mqser/

mqseries-0.15.0 -I/usr/include/php/20180731 -I/usr/include/php/20180731/main -I/usr/include/php/20180731/TSRM -I/usr/include/php/20180731/Zend -I/usr/include/p

hp/20180731/ext -I/usr/include/php/20180731/ext/date/lib -I/opt/mqm/inc-DHAVE_CONFIG_H-g -O2-o mqseries.la -export-dynamic -avoid-version -prefer-pic -

module -rpath /tmp/mqser/mqseries-0.15.0/modulesmqseries.lo mqseries_helper.lo -Wl,-rpath,/opt/mqm/lib64 -L/opt/mqm/lib64 -lmqic 

libtool: link: cc -shared-fPIC -DPIC.libs/mqseries.o .libs/mqseries_helper.o -L/opt/mqm/lib64 -lmqic-g -O2 -Wl,-rpath -Wl,/opt/mqm/lib64 -Wl,-soname 

-Wl,mqseries.so -o .libs/mqseries.so 

libtool: link: ( cd ".libs" && rm -f "mqseries.la" && ln -s "../mqseries.la" "mqseries.la" )

/bin/bash /tmp/mqser/mqseries-0.15.0/libtool --mode=install cp ./mqseries.la /tmp/mqser/mqseries-0.15.0/modules 

libtool: install: cp ./.libs/mqseries.so /tmp/mqser/mqseries-0.15.0/modules/mqseries.so 

libtool: install: cp ./.libs/mqseries.lai /tmp/mqser/mqseries-0.15.0/modules/mqseries.la

libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /tmp/mqser/mqseries-0.15.0/modules

----------------------------------------------------------------------

Libraries have been installed in:

 /tmp/mqser/mqseries-0.15.0/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'.

 

Установщик написал:

 

Libraries have been installed in:/tmp/mqser/mqseries-0.15.0/modules

 

То есть, файл mqseries.so находится в папке /tmp/mqser/mqseries-0.15.0/modules/

Дополнительно копия файла mqseries.so лежит тут: /tmp/mqser/mqseries-0.15.0/.libs/

 

9. Скопировать файл mqseries.so в папку нативной версии php: /usr/lib/php/20180731/

Установка расширения MQ для PHP – mqseriesВнимание! Никакой INI-файл для нативной версии mqseries не нужен!

 

10. Активировать расширение mqseries в настройках нативной версии php через панель ISP Manager:

Установка расширения MQ для PHP – mqseries  

11. Проверить работу расширения с помощью команды phpinfo():

Установка расширения MQ для PHP – mqseries

или с помощью тестового php-скрипта.

Самая простая проверка:

 

<? 
    if(!extension_loaded('mqseries')) {
       echo 'PHP extension "mqseries" not loaded. Loading..';
       if (!dl('mqseries.so')) exit;
      echo 'Ok.<br>';
     }
?>

 




 

 

II. Установка mqseries для альтернативной версии php:

Примечание: для каждой альтернативной версии php необходимо выполнить все ниже приведенные действия отдельно!

Выполним установку mqseries для альтернативной версии php - для php5.4.

12. Выполнить пункты 1 и 2, если это не было сделано.

 

13. Полностью повторить п.3.

 

14. Перейти в папку с распакованным дистрибутивом расширения mqseries /tmp/mqser/mqseries-0.15.0/ и запустить phpize (для нужной альтернативной версии php – в данном случае – 5.4):

 

root@myserver:~# cd /tmp/mqser/mqseries-0.15.0

                     

root@myserver:/tmp/mqser/mqseries-0.15.0# /opt/php54/bin/phpize                                                                                                

Configuring for: 

PHP Api Version:         20100412                                                                                                                             

Zend Module Api No:      20100525                                                                                                                             

Zend Extension Api No:   220100525                                                                                                                                                                                                                                                                         

root@myserver:/tmp/mqser/mqseries-0.15.0#

 

 

15. Время не тратить и "убить сразу трёх зайцев" - выполнить конфигурирование и сразу же установку и копирование файла скомпилированного расширения mqseries.so одной общей командой:

./configure --with-php-config=/opt/php54/bin/php-config --with-libdir=lib64 && make && make install 

Конфигурирование нужно обязательно выполнять с использованием требуемой версии php. Возможно, команды MAKE и MAKE INSTALL можно запускать отдельно, также указав в качестве параметра версию php, но, потратив много времени на выполнение данного квеста в целом, у меня уже не было желания делать подобные эксперименты.

Оптом все работает? - Да! - Вот и отлично!!!

 

 

root@myserver:/tmp/mqser/mqseries-0.15.0# ./configure --with-php-config=/opt/php54/bin/php-config --with-libdir=lib64 && make && make install                   

checking for grep that handles long lines and -e... /usr/bin/grep

checking for egrep... /usr/bin/grep -E

checking for a sed that does not truncate output... /usr/bin/sed                                                                                              

checking for cc... cc                                                                                                                                         

checking whether the C compiler works... yes                                                                                                                  

checking for C compiler default output file name... a.out                                                                                                     

checking for suffix of executables...                                                                                                                         

checking whether we are cross compiling... no                                                                                                                 

checking for suffix of object files... o                                                                                                                       

checking whether we are using the GNU C compiler... yes                                                                                                       

checking whether cc accepts -g... yes                                                                                                                         

checking for cc option to accept ISO C89... none needed                                                                                                       

checking how to run the C preprocessor... cc -E                                                                                                               

checking for icc... no                                                                                                                                         

checking for suncc... no                                                                                                                                      

checking whether cc understands -c and -o together... yes                                                                                                     

checking for system library directory... lib64                                                                                                                 

checking if compiler supports -R... no                                                                                                                        

checking if compiler supports -Wl,-rpath,... yes                                                                                                              

checking build system type... x86_64-pc-linux-gnu                                                                                                             

checking host system type... x86_64-pc-linux-gnu                                                                                                              

checking target system type... x86_64-pc-linux-gnu                                                                                                            

checking for PHP prefix... /opt/php54                                                                                                                         

checking for PHP includes... -I/opt/php54/include/php -I/opt/php54/include/php/main -I/opt/php54/include/php/TSRM -I/opt/php54/include/php/Zend -I/opt/php54/in

clude/php/ext -I/opt/php54/include/php/ext/date/lib                                                                                                            

checking for PHP extension directory... /opt/php54/lib/php/modules;                                                                                           

checking for PHP installed headers prefix... /opt/php54/include/php                                                                                           

checking if debug is enabled... no                                                                                                                            

checking if zts is enabled... no                                                                                                                              

checking for re2c... no                                                                                                                                        

configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.                                                                  

checking for gawk... gawk                                                                                                                                     

checking for mqseries support... yes, shared                                                                                                                   

checking for mqseries files in default path... found in /opt/mqm                                                                                              

checking for MQCONN in -lmqic... yes                                                                                                                          

checking for MQSUB in -lmqic... yes                                                                                                                           

checking for ld used by cc... /usr/bin/ld                                                                                                                     

checking if the linker (/usr/bin/ld) is GNU ld... yes                                                                                                         

checking for /usr/bin/ld option to reload object files... -r                                                                                                  

checking for BSD-compatible nm... /usr/bin/nm -B                                                                                                              

checking whether ln -s works... yes                                                                                                                            

checking how to recognize dependent libraries... pass_all                                                                                                     

checking for ANSI C header files... yes                                                                                                                       

checking for sys/types.h... yes                                                                                                                               

checking for sys/stat.h... yes                                                                                                                                

checking for stdlib.h... yes                                                                                                                                   

checking for string.h... yes                                                                                                                                  

checking for memory.h... yes                                                                                                                                  

checking for strings.h... yes                                                                                                                                 

checking for inttypes.h... yes                                                                                                                                

checking for stdint.h... yes                                                                                                                                  

checking for unistd.h... yes                                                                                                                                  

checking dlfcn.h usability... yes                                                                                                                             

checking dlfcn.h presence... yes                                                                                                                               

checking for dlfcn.h... yes                                                                                                                                   

checking the maximum length of command line arguments... 1572864                                                                                              

checking command to parse /usr/bin/nm -B output from cc object... ok                                                                                           

checking for objdir... .libs                                                                                                                                  

checking for ar... ar                                                                                                                                         

checking for ranlib... ranlib                                                                                                                                 

checking for strip... strip                                                                                                                                   

checking if cc supports -fno-rtti -fno-exceptions... no                                                                                                       

checking for cc option to produce PIC... -fPIC                                                                                                                

checking if cc PIC flag -fPIC works... yes                                                                                                                    

checking if cc static flag -static works... yes                                                                                                                

checking if cc supports -c -o file.o... yes                                                                                                                   

checking whether the cc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes                                                                   

checking whether -lc should be explicitly linked in... no                                                                                                     

checking dynamic linker characteristics... GNU/Linux ld.so                                                                                                    

checking how to hardcode library paths into programs... immediate                                                                                             

checking whether stripping libraries is possible... yes                                                                                                       

checking if libtool supports shared libraries... yes                                                                                                          

checking whether to build shared libraries... yes                                                                                                              

checking whether to build static libraries... no                                                                                                              

                                                                                                                                                               

creating libtool                                                                                                                                              

appending configuration tag "CXX" to libtool                                                                                                                  

configure: creating ./config.status                                                                                                                            

config.status: creating config.h                                                                                                                              

/bin/bash /tmp/mqser/mqseries-0.15.0/libtool --mode=compile cc  -I. -I/tmp/mqser/mqseries-0.15.0 -DPHP_ATOM_INC -I/tmp/mqser/mqseries-0.15.0/include -I/tmp/mqs

er/mqseries-0.15.0/main -I/tmp/mqser/mqseries-0.15.0 -I/opt/php54/include/php -I/opt/php54/include/php/main -I/opt/php54/include/php/TSRM -I/opt/php54/include/

php/Zend -I/opt/php54/include/php/ext -I/opt/php54/include/php/ext/date/lib -I/opt/mqm/inc  -DHAVE_CONFIG_H  -g -O2   -c /tmp/mqser/mqseries-0.15.0/mqseries.c 

-o mqseries.lo                                                                                                                                                

mkdir .libs                                                                                                                                                   

 cc -I. -I/tmp/mqser/mqseries-0.15.0 -DPHP_ATOM_INC -I/tmp/mqser/mqseries-0.15.0/include -I/tmp/mqser/mqseries-0.15.0/main -I/tmp/mqser/mqseries-0.15.0 -I/opt/

php54/include/php -I/opt/php54/include/php/main -I/opt/php54/include/php/TSRM -I/opt/php54/include/php/Zend -I/opt/php54/include/php/ext -I/opt/php54/include/p

hp/ext/date/lib -I/opt/mqm/inc -DHAVE_CONFIG_H -g -O2 -c /tmp/mqser/mqseries-0.15.0/mqseries.c  -fPIC -DPIC -o .libs/mqseries.o                                

/bin/bash /tmp/mqser/mqseries-0.15.0/libtool --mode=compile cc  -I. -I/tmp/mqser/mqseries-0.15.0 -DPHP_ATOM_INC -I/tmp/mqser/mqseries-0.15.0/include -I/tmp/mqs

er/mqseries-0.15.0/main -I/tmp/mqser/mqseries-0.15.0 -I/opt/php54/include/php -I/opt/php54/include/php/main -I/opt/php54/include/php/TSRM -I/opt/php54/include/

php/Zend -I/opt/php54/include/php/ext -I/opt/php54/include/php/ext/date/lib -I/opt/mqm/inc  -DHAVE_CONFIG_H  -g -O2   -c /tmp/mqser/mqseries-0.15.0/mqseries_he

lper.c -o mqseries_helper.lo                                                                                                                                  

 cc -I. -I/tmp/mqser/mqseries-0.15.0 -DPHP_ATOM_INC -I/tmp/mqser/mqseries-0.15.0/include -I/tmp/mqser/mqseries-0.15.0/main -I/tmp/mqser/mqseries-0.15.0 -I/opt/

php54/include/php -I/opt/php54/include/php/main -I/opt/php54/include/php/TSRM -I/opt/php54/include/php/Zend -I/opt/php54/include/php/ext -I/opt/php54/include/p

hp/ext/date/lib -I/opt/mqm/inc -DHAVE_CONFIG_H -g -O2 -c /tmp/mqser/mqseries-0.15.0/mqseries_helper.c  -fPIC -DPIC -o .libs/mqseries_helper.o                  

/bin/bash /tmp/mqser/mqseries-0.15.0/libtool --mode=link cc -DPHP_ATOM_INC -I/tmp/mqser/mqseries-0.15.0/include -I/tmp/mqser/mqseries-0.15.0/main -I/tmp/mqser/

mqseries-0.15.0 -I/opt/php54/include/php -I/opt/php54/include/php/main -I/opt/php54/include/php/TSRM -I/opt/php54/include/php/Zend -I/opt/php54/include/php/ext

 -I/opt/php54/include/php/ext/date/lib -I/opt/mqm/inc  -DHAVE_CONFIG_H  -g -O2   -o mqseries.la -export-dynamic -avoid-version -prefer-pic -module -rpath /tmp/

mqser/mqseries-0.15.0/modules  mqseries.lo mqseries_helper.lo -Wl,-rpath,/opt/mqm/lib64 -L/opt/mqm/lib64 -lmqic                                               

cc -shared  .libs/mqseries.o .libs/mqseries_helper.o  -L/opt/mqm/lib64 -lmqic  -Wl,-rpath -Wl,/opt/mqm/lib64 -Wl,-soname -Wl,mqseries.so -o .libs/mqseries.so  

creating mqseries.la                                                                                                                                          

(cd .libs && rm -f mqseries.la && ln -s ../mqseries.la mqseries.la)                                                                                           

/bin/bash /tmp/mqser/mqseries-0.15.0/libtool --mode=install cp ./mqseries.la /tmp/mqser/mqseries-0.15.0/modules                                               

cp ./.libs/mqseries.so /tmp/mqser/mqseries-0.15.0/modules/mqseries.so                                                                                         

cp ./.libs/mqseries.lai /tmp/mqser/mqseries-0.15.0/modules/mqseries.la                                                                                        

PATH="$PATH:/sbin" ldconfig -n /tmp/mqser/mqseries-0.15.0/modules                                                                                             

----------------------------------------------------------------------                                                                                        

Libraries have been installed in:                                                                                                                             

   /tmp/mqser/mqseries-0.15.0/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:     /opt/php54/lib/php/modules;/                                                                                                

root@myserver:/tmp/mqser/mqseries-0.15.0#                                                                                                                       

 

16. Особое внимание обратить на строчку в консоли: 

Libraries have been installed in     /tmp/mqser/mqseries-0.15.0/modules

В этой папке лежит нужный нам файл – mqseries.so

Но его не нужно никуда копировать, команда MAKE INSTALL сделала это за нас и поместила его куда надо, а именно - в директорию /opt/php54/lib/php/modules/

 

17. В папке /opt/php54/etc/mods-available/ создать файл mqseries.ini с содержимым: extension=mqseries.so

Установка расширения MQ для PHP – mqseries

Это можно было также сделать с помощью команды в консоли: 

 

echo extension= mqseries.so >> /opt/php54/etc/mods-available/mqseries.ini

 

(Для нативной версии ini-файл создавать не нужно).

 

18. Выполнить пункт 10 - включить расширение для требуемой альтернативной версии php.

 

19. Выполнить пункт 11 - проверить работу расширения.

 

 

-------------------

 

Доп. информация: команда для проверки, «где живут» расширения для искомой версии php на сервере:

 

root@myserver:~# /opt/php54/bin/php-config --extension-dir

/opt/php54/lib/php/modules                                                                                                                                    

root@myserver:~#   

                                                                                                                                            

Расширения для php5.4 живут тут: /opt/php54/lib/php/modules/

 

Комментарии (0)

Здесь не опубликовано еще ни одного комментария

Оставьте свой комментарий

  1. Опубликовать комментарий как Гость.
0 Значки
Вложения (0 / 3)
Поделитесь своим местоположением

      Debian 10 + Oracle = Любовь!
      Debian 10 + Oracle = Любовь!

      Или "Как установить и настроить Oracle Instant Client и oci8 (PECL) на Linux Debian 10" Если у вас есть задача, требующая с помощью php обращаться к базе данных ORACLE, то эта статья для вас. Мне пришлось прочитать много разных статей в интернете (из которых ни одна не дала результата), кучу технической документации от ORACLE и по php, провести много экспериментов, потом откатить сервер в...




      Фразы про ЛИЦО (FACE)
      Фразы про ЛИЦО (FACE)

      Выражения, в которых используется слово ЛИЦО (face), использование их в повседневной речи и сравнение с русскими аналогами.   1. FACE THE MUSIC (досл.: «встретить музыку») По-русски это означает: держать ответ за что-либо, расплачиваться, "расхлёбывать кашу".Пример: You’ve made a mistake; now you’ll have to face the music.Ты совершил ошибку, теперь тебе придется за нее расплачиваться.




      Доработка компонента JComments для Slogin
      Доработка компонента JComments для Slogin

      При использовании на сайте с CMS Joomla компонента добавления комментариев JComments совместно с компонентом авторизации через соцсети Slogin может понадобиться некоторая доработка напильников компонента JComments, чтобы пользователям сайта было понятнее и удобнее. После выполнения настройки и активации социальных сетей (всех или нескольких) компонента Slogin внизу страницы после заголовка "Добавить комментарий" перед...




      Подборка полезных команд bash-Mac (башмак :)
      Подборка полезных команд bash-Mac (башмак :)

      Для полноценной работы с Mac рано или поздно придется использовать консоль. В маке она называется Терминалом. Кроме заурядных известных команд, некоторые действия приходится выполнять не часто, запоминать их особого смысла нет, лучше сохранить в шпаргалку. Консоль/терминал также называют - BASH (Bourne-Again SHell). Все это рассматриваем в рамках использования на компьютерах Mac, в итоге -...




      Apple закрывает программы развертывания DEP и VPP
      Apple закрывает программы развертывания DEP и VPP

      Программы развертывания Apple - Device Enrollment Program (DEP) и Volume Purchase Program (VPP) с 1 декабря 2019 года перестанут существовать. Deployment Programs - DEP и VPP будут объединены в одну и их заменит единая программа - Apple Business Manager (для коммерческих компаний) и Apple School Manager (для образовательных учреждений). Для того, чтобы продолжить использование программой регистрации устройств (DEP) и программой...




      Изменение БД для GPS Garmin с цикла AIRAC 1708
      Изменение БД для GPS Garmin с цикла AIRAC 1708

      Количество аэронавигационной информации со временем неизбежно увеличивается, и носители навигационных данных для старых спутниковых навигационных систем уже не могут вместить в себя всю информацию. Потому что разработчики этих систем несколько десятилетий назад даже не могли себе представить, что использование карты памяти размером в 2 или 3 мегабайта может оказаться не достаточно. В результате пользователи...




      HEADERS из POSTMAN в виде текста
      HEADERS из POSTMAN в виде текста

      Если в процессе тестирования API необходимо сохранять из POSTMAN результаты запросов, в том числе headers в виде текста, но можно это делать с помощью консоли Postman (если вариант со скриншотами не подходит по какой-то причине :).



Яндекс.Метрика
Сайт работает на быстром VPS/VDS хостинге от FASTVPS