Как диагностировать vMBitrix 9 после обновления MYSQL не видит libmysqlclient.so?

Ссылка скопирована
1 ответ

Сейчас ситуация такая: vMBitrix 9 после обновления MYSQL до 8.4 перестали работать задания из pool, завершаются с ошибкой.
Сейчас ситуация такая: например создание Сайта из меню 8-> create site задание вываливается с такой ошибкой

TASK [web : generate missing variables] **************************************** fatal: [vbox.local]: FAILED! => {"changed": false, "module_stderr": "Use of uninitialized value $val in substitution (s///) at /root/.ansible/tmp/ansible-tmp-1758196249.141627-7189-49881519098560/AnsiballZ_bx_generate_site_vars line 223, <$fh> line 1.\nUse of uninitialized value $val in substitution (s///) at /root/.ansible/tmp/ansible-tmp-1758196249.141627-7189-49881519098560/AnsiballZ_bx_generate_site_vars line 224, <$fh> line 1.\nUse of uninitialized value $val in substitution (s///) at /root/.ansible/tmp/ansible-tmp-1758196249.141627-7189-49881519098560/AnsiballZ_bx_generate_site_vars line 223, <$fh> line 1.\nUse of uninitialized value $val in substitution (s///) at /root/.ansible/tmp/ansible-tmp-1758196249.141627-7189-49881519098560/AnsiballZ_bx_generate_site_vars line 224, <$fh> line 1.\nUse of uninitialized value $val in substitution (s///) at /root/.ansible/tmp/ansible-tmp-1758196249.141627-7189-49881519098560/AnsiballZ_bx_generate_site_vars line 223, <$fh> line 1.\nUse of uninitialized value $val in substitution (s///) at /root/.ansible/tmp/ansible-tmp-1758196249.141627-7189-49881519098560/AnsiballZ_bx_generate_site_vars line 224, <$fh> line 1.\nUse of uninitialized value $val in substitution (s///) at /root/.ansible/tmp/ansible-tmp-1758196249.141627-7189-49881519098560/AnsiballZ_bx_generate_site_vars line 223, <$fh> line 1.\nUse of uninitialized value $val in substitution (s///) at /root/.ansible/tmp/ansible-tmp-1758196249.141627-7189-49881519098560/AnsiballZ_bx_generate_site_vars line 224, <$fh> line 1.\nUse of uninitialized value $val in substitution (s///) at /root/.ansible/tmp/ansible-tmp-1758196249.141627-7189-49881519098560/AnsiballZ_bx_generate_site_vars line 223, <$fh> line 1.\nUse of uninitialized value $val in substitution (s///) at /root/.ansible/tmp/ansible-tmp-1758196249.141627-7189-49881519098560/AnsiballZ_bx_generate_site_vars line 224, <$fh> line 1.\ninstall_driver(mysql) failed: Can't load '/usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.21: cannot open shared object file: No such file or directory at /usr/lib64/perl5/DynaLoader.pm line 193.\n\u0000 at (eval 315) line 3.\nCompilation failed in require at (eval 315) line 3.\nPerhaps a required shared library or dll isn't installed where expected\n at /opt/webdir/lib/bxSiteFiles.pm line 198.\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 2}

По вводным: в самом меню появляется такая строка

install_driver(mysql) failed: Can't load '/usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.21: cannot open shared object file: No such file or directory at /usr/lib64/perl5/DynaLoader.pm line 193. at (eval 315) line 3. Compilation failed in require at (eval 315) line 3. Perhaps a required shared library or dll isn't installed where expected at /opt/webdir/lib/bxSiteFiles.pm line 198. Not found installed sites in the pool
#perl -MDBD::mysql -le'print $DBD::mysql::VERSION' Can't load '/usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.21: cannot open shared object file: No such file or directory at /usr/lib64/perl5/DynaLoader.pm line 193. at -e line 0. Compilation failed in require. BEGIN failed--compilation aborted.
#ldconfig -p | grep libmysqlclient libmysqlclient.so.24 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.24

Сейчас ситуация такая: как я понял не найден файл libmysqlclient.so.21, за место него есть libmysqlclient.so.24

Как исправить?

Сейчас ситуация такая: на самих сайтах это никак не сказывается, работают без ошибок

По вводным: виртуальная машина VMBitrix обновлена до версии 9.0.7
Php 8.4.12
Mysql 8.4.6-6
Perl 5.32.1

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

После обновления MySQL в BitrixVM ошибка с libmysqlclient.so обычно означает, что PHP-модуль mysql/mysqli/pdo_mysql собран или настроен под старую клиентскую библиотеку, а после обновления файл исчез, переехал или изменил версию. Это не проблема сайта как такового, а конфликт системных пакетов и PHP-расширений.

Сначала нужно понять, какой PHP используется BitrixVM и какой модуль падает:

php -v
php -m | grep -i mysql
php --ini
ldd $(php -i | grep '^extension_dir' | awk '{print $3}')/mysqli.so | grep mysql

php -v php -m | grep -i mysql php --ini ldd $(php -i | grep '^extension_dir' | awk '{print $3}')/mysqli.so | grep mysql

Если ldd показывает not found для libmysqlclient.so, значит расширение ссылается на библиотеку, которой уже нет. Дальше есть два нормальных пути: поставить совместимый пакет с клиентской библиотекой MySQL/MariaDB или переустановить PHP mysql-расширения из репозитория, соответствующего текущей версии PHP.

  • проверьте, не смешаны ли пакеты MySQL и MariaDB;
  • не копируйте libmysqlclient.so вручную из случайного места;
  • после правок перезапустите php-fpm/httpd;
  • проверьте веб-версию PHP, а не только CLI;
  • сделайте бэкап базы перед любыми действиями с MySQL.

На CentOS/BitrixVM часто помогает переустановка нужных пакетов:

yum list installed | grep -Ei 'mysql|maria|php'
yum reinstall php-mysqlnd
systemctl restart php-fpm
systemctl restart httpd

yum list installed | grep -Ei 'mysql|maria|php' yum reinstall php-mysqlnd systemctl restart php-fpm systemctl restart httpd

Если используется несколько версий PHP, проверьте конкретный pool php-fpm для сайта. Бывает, что CLI уже работает, а сайт продолжает падать, потому что Apache/FPM грузит другое extension_dir. После восстановления обязательно откройте /bitrix/admin/phpinfo.php или временный phpinfo-файл и убедитесь, что mysqli и pdo_mysql загружены без warning.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно