При запуске PHP скрипта в Arch Linux или производных дистрибутивах (Manjaro, BlackArch) в командной строке
php 8.php
Вы можете увидеть следующее предупреждение от PHP:
PHP Warning: PHP Startup: imap: Unable to initialize module Module compiled with module API=20210902 PHP compiled with module API=20220829 These options need to match in Unknown on line 0 Warning: PHP Startup: imap: Unable to initialize module Module compiled with module API=20210902 PHP compiled with module API=20220829 These options need to match in Unknown on line 0
Сообщение гласит, что невозможно инициализировать модуль imap.
Функции модуля imap позволяют работать с протоколом IMAP, а также NNTP, POP3 и локальными методами доступа к почтовому ящику. Однако следует иметь в виду, что некоторые функции IMAP не будут корректно работать c протоколом POP. Также нужно помнить, что модуль IMAP не является потокобезопасным; его не следует использовать со сборками ZTS.
Как сказано в документации PHP, https://www.php.net/manual/en/imap.installation.php, для поддержки imap в PHP необходимо компилировать PHP с опцией --with-imap[=DIR]. Но на самом деле для включения модуля imap в Linux обычно достаточно установить соответствующий пакет (например, php8.2-imap) и включить модуль как расширение в php.ini.
В Arch Linux всё работало аналогично вплоть до выхода версии PHP 8.2. Как сказано в официальном сообщении https://archlinux.org/news/php-82-update-and-introduction-of-legacy-branch/, расширение imap удалено из репозитория, поскольку оно полагается на библиотеку c-client, которая заброшена много лет назад.
В Debian и производных дистрибутивах (Kali Linux, Ubuntu) это никак не мешает иметь расширение php8.2-imap в стандартных репозиториях. Но в Arch Linux, как говориться, «своя атмосфера».
Вариантов выхода из данной ситуации в Arch Linux два:
- Отключить расширение imap
- Установить расширение imap для PHP 8.2 и последующих версий
Рассмотрим оба этих решения.
Как отключить расширение imap в PHP в Arch Linux
Если вы не используете модуль imap, то вам достаточно его отключить — это совсем просто.
Откройте файл /etc/php/php.ini:
sudo gedit /etc/php/php.ini
найдите там строку
extension=imap
и закомментируйте её, чтобы получилось:
;extension=imap
Всё готово! Сразу после этого предупреждение о невозможности инициализации модуля imap исчезнет.
Как установить расширение imap для PHP в Arch Linux (модуль php82-imap для Arch Linux)
В AUR присутствует расширение imap для различных версий PHP, например:
- php82-imap
- php81-imap
- php80-imap
Подробности о том, как установить пакеты из AUR смотрите в статьях:
- Как установить программу из Arch User Repository (AUR) – пользовательского репозитория Arch
- Автоматическая установка и обновление пакетов AUR
Например:
pikaur -S php82-imap
Но рекомендуется перейти на страницу расширения https://aur.archlinux.org/packages/php82-imap и прочитать закреплённый комментарий. Автор расширения создал репозиторий на build.opensuse.org с бинарными файлами. Вы можете добавить этот репозиторий в источники пакетов на своей системы и установить (а при выходе новых версий и обновлять) imap, а также другие расширения для разных версий PHP.
Близкие статьи
- Особенности использования валидных SSL-сертификатов (64.8%)
- Ошибка phpMyAdmin «Error: Undefined constant "SODIUM_CRYPTO_SECRETBOX_KEYBYTES"» (РЕШЕНО) (63%)
- Решение проблемы Unable to load dynamic library 'mcrypt.so' (tried: /usr/lib/php/modules/mcrypt.so (57.4%)
- Решение проблемы Failed to configure CA certificate chain!, Fatal error initialising mod_ssl, exiting. (55.6%)
- Решение проблемы «ERROR] Could not open mysql.plugin table. Some plugins may be not loaded» при запуске MariaDB в Arch Linux (55.6%)
- Настройка cron в Arch Linux / BlackArch (RANDOM - 50%)