Библиотека для php генерируется не для той версии
Мне понадобилось удалить либу ampq
, которая была установлена вместе с php 8.1
. Версия была не подходящая под клиент Composer:
Root composer.json requires PHP extension ext-amqp 1.11.0 (exact version match: 1.11.0 or 1.11.0.0) but it has the wrong version installed (2.1.2)
На сервере я случайно накатил Php 8.3 и после этого решил поставить эту либу с помощью pecl:
otulashvili@portal-frnx-1 [pinkas] :/usr/lib/php $ sudo pecl install amqp-1.11.0
PHP Warning: PHP Startup: amqp: Unable to initialize module
Module compiled with module API=20230831
PHP compiled with module API=20210902
Первый раз я не заметил эти строки, так как не часто обновляю Php. Но когда поймал варнинг начал разбираться:
php -m
PHP Warning: PHP Startup: amqp: Unable to initialize module
Module compiled with module API=20230831
PHP compiled with module API=20210902
These options need to match
in Unknown on line 0
Тогда я удалил Php 8.3, удалил папку с его api из /usr/lib/php/
, но ничего не помогало и при каждой установке/удалении с помощью pecl это либы все равно получал варнинг.
После очередной попытки я заметил такую строку в выводе после подготовке к установке:
otulashvili@portal-frnx-1 [pinkas] :/usr/lib/php $ sudo pecl install amqp-1.11.0
PHP Warning: PHP Startup: amqp: Unable to initialize module
Module compiled with module API=20230831
PHP compiled with module API=20210902
These options need to match
in Unknown on line 0
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
Вот про эту строку я говорю:
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
В общем после обновления я попробовал снова установить с помощью pecl мою библиотеку и, вуаля, все получилось!
otulashvili@portal-frnx-1 [pinkas] :~ $ php -m | grep amqp
amqp
otulashvili@portal-frnx-1 [pinkas] :~ $ php --ri amqp | grep "Version"
Version => 1.11.0
Что такое pecl channel-update pecl.php.net
В общем это репозиторий с расширениями для Php.
Ребята из php иногда убирают расширения из стандартной сборки и тогда их приходится ставить с помощью pecl.
pecl.php.net.
- это основной канал для pecl, где публикуются все расширения и обновления