Почему не устанавливается mysqli в Docker?

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

Есть докерфайл

FROM phpdockerio/php:7.4-fpm  RUN apt-get update      && apt-get -y --no-install-recommends install      mc      php7.4-gd      php7.4-imagick      php7.4-intl      php7.4-interbase      php7.4-mbstring      php7.4-mcrypt      php7.4-memcache      php7.4-memcached      php7.4-mysql      php7.4-mysqli      php7.4-pdo      php7.4-opcache      php7.4-soap      php7.4-xdebug      php7.4-zip      php7.4-pear      php7.4-pdo-mysql      && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*

FROM phpdockerio/php:7.4-fpm RUN apt-get update && apt-get -y --no-install-recommends install mc php7.4-gd php7.4-imagick php7.4-intl php7.4-interbase php7.4-mbstring php7.4-mcrypt php7.4-memcache php7.4-memcached php7.4-mysql php7.4-mysqli php7.4-pdo php7.4-opcache php7.4-soap php7.4-xdebug php7.4-zip php7.4-pear php7.4-pdo-mysql && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*

Но почему-то при установке нет в модулях php mysqli

root@28a65a9eba80:/var/www# php -m  Warning: PHP Startup: Unable to load dynamic library 'mcrypt' (tried: /usr/lib/php/20190902/mcrypt (/usr/lib/php/20190902/mcrypt: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/mcrypt.so (/usr/lib/php/20190902/mcrypt.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 [PHP Modules] apc apcu calendar Core ctype curl date dom exif FFI fileinfo filter ftp gettext hash iconv json libxml mbstring openssl pcntl pcre PDO Phar posix readline Reflection session shmop SimpleXML sockets sodium SPL standard sysvmsg sysvsem sysvshm tokenizer xml xmlreader xmlwriter xsl Zend OPcache zip zlib  [Zend Modules] Zend OPcache

root@28a65a9eba80:/var/www# php -m Warning: PHP Startup: Unable to load dynamic library 'mcrypt' (tried: /usr/lib/php/20190902/mcrypt (/usr/lib/php/20190902/mcrypt: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/mcrypt.so (/usr/lib/php/20190902/mcrypt.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 [PHP Modules] apc apcu calendar Core ctype curl date dom exif FFI fileinfo filter ftp gettext hash iconv json libxml mbstring openssl pcntl pcre PDO Phar posix readline Reflection session shmop SimpleXML sockets sodium SPL standard sysvmsg sysvsem sysvshm tokenizer xml xmlreader xmlwriter xsl Zend OPcache zip zlib [Zend Modules] Zend OPcache

Дополнительно:

смотрите логи, и с чего появиться mysqli, если пакета php7.4-mysqli не существует

  • IvanU7n, а куда он делся?
  • Дмитрий, а его и не было (возможно никогда), всё связанное с mysql (т.е. и mysqlng, и mysqli, и pdo_mysql) лежит в php*-mysql
  • Дмитрий,
    root@node3:~# apt list php7.4*mysql* Listing... Done php7.4-mysql-dbgsym/bookworm 1:7.4.33-8+0~20230904.88+debian12~1.gbp87c414 amd64 php7.4-mysql/bookworm 1:7.4.33-8+0~20230904.88+debian12~1.gbp87c414 amd64 root@node3:~# dpkg -L php8.1-mysql | grep .so /usr/lib/php/20210902/mysqli.so /usr/lib/php/20210902/mysqlnd.so /usr/lib/php/20210902/pdo_mysql.so root@node3:~#

    root@node3:~# apt list php7.4*mysql* Listing... Done php7.4-mysql-dbgsym/bookworm 1:7.4.33-8+0~20230904.88+debian12~1.gbp87c414 amd64 php7.4-mysql/bookworm 1:7.4.33-8+0~20230904.88+debian12~1.gbp87c414 amd64 root@node3:~# dpkg -L php8.1-mysql | grep .so /usr/lib/php/20210902/mysqli.so /usr/lib/php/20210902/mysqlnd.so /usr/lib/php/20210902/pdo_mysql.so root@node3:~#

  • mcrypt тоже нет, выпилили
  • # Install PHP extensions RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd mysqli pgsql pdo_pgsql

    # Install PHP extensions RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd mysqli pgsql pdo_pgsql

    Почему не устанавливается mysqli в Docker?

  • Дмитрий,
    31 | >>> RUN docker-php-ext-install pdo_mysql   32 |     RUN docker-php-ext-install mbstring   33 |     RUN docker-php-ext-install exif -------------------- ERROR: failed to solve: process "/bin/sh -c docker-php-ext-install pdo_mysql" did not complete successfully: exit code: 127 ERROR: Service 'php' failed to build

    31 | >>> RUN docker-php-ext-install pdo_mysql 32 | RUN docker-php-ext-install mbstring 33 | RUN docker-php-ext-install exif -------------------- ERROR: failed to solve: process "/bin/sh -c docker-php-ext-install pdo_mysql" did not complete successfully: exit code: 127 ERROR: Service 'php' failed to build

  • Ответы:

    Установить мало. Надо разрешить и включить.
    Гуглите синтаксис docker-php-ext-install после установки в систему самого расширения.

    Очень советую использовать https://github.com/mlocati/docker-php-extension-in...
    Все работает из коробки, подключается в одну строчку, поддерживает море платформ/версий.

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

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

    Заказать помощь
    Лучший ответ
    1
    Стас DB Ответ

    Проблема, связанная с установкой mysqli в Docker, может быть вызвана несколькими факторами. Вот несколько возможных причин и способы их решения:

    1. Отсутствие расширения mysqli в PHP образе:
    Убедитесь, что вы используете образ PHP, который содержит расширение mysqli. Для этого вы можете проверить Dockerfile, который вы используете для создания контейнера. Убедитесь, что в инструкции `RUN docker-php-ext-install mysqli` присутствует.

    2. Неудачная установка расширения mysqli:
    Если вы уверены, что расширение mysqli должно быть установлено в вашем образе PHP, то возможно оно не было установлено правильно. Попробуйте пересобрать образ, убедившись, что команда установки mysqli выполняется успешно.

    3. Ошибки в настройках Docker-контейнера:
    Проверьте файл php.ini в вашем контейнере и убедитесь, что расширение mysqli правильно активировано. Вы можете добавить следующую строку в php.ini:
    ```
    extension=mysqli.so
    ```

    4. Проблемы с сетевым подключением:
    Иногда проблема может быть связана с сетевым подключением в Docker. Убедитесь, что ваш контейнер имеет доступ к интернету и может загрузить необходимые файлы для установки расширения mysqli.

    5. Обновление образа PHP:
    Если все вышеперечисленные способы не помогли, попробуйте обновить образ PHP до последней версии. Возможно, проблема была исправлена в более новой версии образа.

    Надеюсь, что один из этих способов поможет вам решить проблему с установкой mysqli в Docker. Если проблема останется, пожалуйста, предоставьте больше информации о вашей конфигурации Docker и коде, чтобы мы могли помочь вам более точно.

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

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

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

    комментарий

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

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