Bug 55532
| Summary: | Невозможно настроить icingaweb2 с php8.4-intl | ||
|---|---|---|---|
| Product: | Branch p11 | Reporter: | Kostevich Arseniy <kostevichae> |
| Component: | icinga-php-library | Assignee: | manowar <manowar> |
| Status: | NEW --- | QA Contact: | qa-p11 <qa-p11> |
| Severity: | normal | ||
| Priority: | P5 | ||
| Version: | unspecified | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||

Description
Kostevich Arseniy 2025-08-06 19:26:46 MSKПлатформа: Alt Server 11.0 x86_64 Версии пакетов: icinga-php-library-0.13.1-alt2 icingaweb2-2.12.1-alt4 Шаги для воспроизведения: 1. На виртуальной машине, где будет развёрнут мастер-узел Icinga 2, поменяйте hostname и перезагрузите её для принятия изменений: # hostnamectl set-hostname icinga2-master.localdomain && reboot 2. Установить пакеты: # apt-get install icinga2 icingaweb2 icinga2-doc icinga-l10n icinga-php-library icinga-php-thirdparty icingaweb2-cli icingaweb2-common icingaweb2-php icingaweb2-php-mysql icingaweb2-php-pgsql liboniguruma5 icingaweb2-nginx icingaweb2-module-director nagwad-icinga-master 3. Получить версию PHP для работы с Icinga: # PHP_VERSION="$(rpm -qR icingaweb2-php | grep openssl | tr -d -c 0-9.)" 4. Создать конфигурацию Nginx для Icinga2 с SSL (Пример для php8.3, т.к. в зависимостях icingaweb2-php php8.3): # cat > /etc/nginx/sites-available.d/icingaweb2-ssl.conf <<EOF server { listen 80; server_name icinga2 icinga2-master.localdomain localhost localhost.localdomain; rewrite ^ https://\$host\$request_uri? permanent; } server { listen 443 ssl; server_name icinga2 icinga2-master.localdomain localhost localhost.localdomain; ssl_certificate /var/lib/icinga2/certs/icinga2-master.localdomain.crt; ssl_certificate_key /var/lib/icinga2/certs/icinga2-master.localdomain.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location ~ ^/icingaweb2/index\.php(.*)$ { fastcgi_pass unix:/var/run/php${PHP_VERSION}-fpm/icingaweb2.socket; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/share/icingaweb2/public/index.php; fastcgi_param ICINGAWEB_CONFIGDIR /etc/icingaweb2; fastcgi_param REMOTE_USER \$remote_user; } location ~ ^/icingaweb2(.+)? { alias /usr/share/icingaweb2/public; index index.php; try_files \$1 \$uri \$uri/ /icingaweb2/index.php\$is_args\$args; } } EOF 4. Отключить старую конфигурацию Nginx и включить новую: # rm -rf /etc/nginx/sites-enabled.d/icingaweb2.conf # ln -s /etc/nginx/sites-available.d/icingaweb2-ssl.conf /etc/nginx/sites-enabled.d/icingaweb2-ssl.conf 5. Запустить сервис PHP-FPM: # systemctl enable --now php${PHP_VERSION}-fpm.service && sleep 5; systemctl status php${PHP_VERSION}-fpm.service --no-pager -l 6. Запустить сервис icinga2: # systemctl enable --now icinga2 && sleep 5; systemctl status icinga2 --no-pager -l 7. Создать каталог конфигурации: # icingacli setup config directory --group icingaweb2 8. Сгенерировать токен: # icingacli setup token create 9. Настроить REST API для связи Icinga и Icinga Web 2: # icinga2 api setup 10. Для применения изменений перезагрузить icinga2: # systemctl restart icinga2.service && sleep 5; systemctl status icinga2.service 11. Запустить сервис Nginx: # systemctl enable --now nginx && sleep 5; systemctl status nginx --no-pager -l 12. В браузере перейдите по адресу https://icinga2/icingaweb2/setup Ожидаемый результат: В браузере открывается веб-интерфейс icinga2 Фактический результат: Веб-интерфейс не открывается(HTTP ERROR 500). В логах nginx есть ошибки: 2025/08/06 19:04:53 [error] 2996#2996: *7 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Class "Locale" not found in /usr/share/icinga-php/ipl/vendor/ipl/i18n/src/Locale.php:125 Stack trace: #0 /usr/share/icinga-php/ipl/vendor/ipl/i18n/src/Locale.php(90): ipl\I18n\Locale->parseLocale('ru_ru') #1 /usr/share/icingaweb2/library/Icinga/Application/Web.php(504): ipl\I18n\Locale->getPreferred('ru-RU,ru;q=0.9,...', Array) #2 /usr/share/icingaweb2/library/Icinga/Application/ApplicationBootstrap.php(696): Icinga\Application\Web->detectLocale() #3 /usr/share/icingaweb2/library/Icinga/Application/Web.php(106): Icinga\Application\ApplicationBootstrap->setupInternationalization() #4 /usr/share/icingaweb2/library/Icinga/Application/ApplicationBootstrap.php(388): Icinga\Application\Web->bootstrap() #5 /usr/share/icingaweb2/library/Icinga/Application/webrouter.php(105): Icinga\Application\ApplicationBootstrap::start() #6 /usr/share/icingaweb2/public/index.php(4): require_once('/usr/share/icin...') #7 {main} thrown in /usr/share/icinga-php/ipl/vendor/ip" while reading response header from upstream, client: 10.88.129.23, server: icinga2, request: "GET /icingaweb2/setup HTTP/1.1", upstream: "fastcgi://unix:/var/run/php8.3-fpm/icingaweb2.socket:", host: "icinga2" Проблема в том, что icingaweb2-php и icinga-php-library требуют разные версии php: # rpm -qR icingaweb2-php icinga-php-library >= 0.13.0 icinga-php-thirdparty >= 0.12.0 php8.3-openssl icingaweb2-php-sql = 2.12.1-alt4 php8.3-ldap php8.3-mbstring php8.3-gd php8.3-imagick php8.3-curl php8.3-fileinfo rpmlib(PayloadIsLzma) # rpm -qR icinga-php-library php8.4-intl rpmlib(PayloadIsLzma) Если установить php8.3-intl и перезапустить nginx, то веб-интерфейс работает корректно. В Sisyphus не воспроизводится.