Как правильно загрузить расширение mongodb для PHP-fpm в Docker?

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

Здравствуйте. Хочу подключить mongodb в докере (вместе с php-fpm), но получаю Warning:

Warning: PHP Startup: Unable to load dynamic library 'mongodb.so WORKDIR /var/www/project' (tried: mongodb.so WORKDIR /var/www/project (mongodb.so WORKDIR /var/www/project: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20220829/mongodb.so WORKDIR /var/www/project.so (/usr/local/lib/php/extensions/no-debug-non-zts-20220829/mongodb.so WORKDIR /var/www/project.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP 8.2.8 (cli) (built: Jul 10 2023 22:00:15) (NTS)

Warning: PHP Startup: Unable to load dynamic library 'mongodb.so WORKDIR /var/www/project' (tried: mongodb.so WORKDIR /var/www/project (mongodb.so WORKDIR /var/www/project: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20220829/mongodb.so WORKDIR /var/www/project.so (/usr/local/lib/php/extensions/no-debug-non-zts-20220829/mongodb.so WORKDIR /var/www/project.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP 8.2.8 (cli) (built: Jul 10 2023 22:00:15) (NTS)

Файл mongodb.so есть в

/usr/local/lib/php/extensions/no-debug-non-zts-20220829

/usr/local/lib/php/extensions/no-debug-non-zts-20220829

В Dockerfile

...   && pecl install mongodb    && docker-php-ext-enable mongodb    && echo "extension=mongodb.so" >> /usr/local/etc/php/php.ini

... && pecl install mongodb && docker-php-ext-enable mongodb && echo "extension=mongodb.so" >> /usr/local/etc/php/php.ini

Делаю php -i | grep "Loaded Configuration File", выдает

Loaded Configuration File => /usr/local/etc/php/php.ini

Loaded Configuration File => /usr/local/etc/php/php.ini

Все ini файлы это:
"/usr/local/etc/php/conf.d/mongo.ini
/usr/local/etc/php/conf.d/docker-php-ext-zip.ini
/usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini
/usr/local/etc/php/conf.d/docker-php-ext-intl.ini
/usr/local/etc/php/conf.d/docker-php-ext-apcu.ini
/usr/local/etc/php/conf.d/docker-fpm.ini
/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
/usr/local/etc/php/php.ini
"
Может для php-fpm где то другой ini есть, в котором надо как-то поправить путь к mongodb?

Как правильно загрузить расширение mongodb для PHP-fpm в Docker?

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

echo "extension=mongodb.so" >> /usr/local/etc/php/php.ini

echo "extension=mongodb.so" >> /usr/local/etc/php/php.ini

Это писать не обязательно, у вас уже вызывается docker-php-ext-enable

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

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

Заказать помощь
Лучший ответ
1
Елена Вебер Ответ

Для загрузки расширения mongodb для PHP-fpm в Docker, вам потребуется создать Dockerfile и настроить его таким образом, чтобы расширение mongodb было установлено и доступно в PHP-fpm контейнере.

Вот пример Dockerfile, который позволит вам загрузить расширение mongodb для PHP-fpm:

# Use an official PHP-fpm image as a base
FROM php:fpm
 
# Install the mongodb extension
RUN pecl install mongodb \
    && docker-php-ext-enable mongodb
 
# Restart PHP-fpm to apply changes
RUN service php7.4-fpm restart

# Use an official PHP-fpm image as a base FROM php:fpm # Install the mongodb extension RUN pecl install mongodb \ && docker-php-ext-enable mongodb # Restart PHP-fpm to apply changes RUN service php7.4-fpm restart

В этом Dockerfile мы используем официальный образ PHP-fpm в качестве базового образа. Затем с помощью команды `pecl install` мы устанавливаем расширение mongodb, а затем с помощью `docker-php-ext-enable` делаем его доступным для использования в PHP-fpm. Наконец, мы перезапускаем PHP-fpm, чтобы применить изменения.

После того как вы создадите Dockerfile, вы можете собрать образ с помощью команды `docker build -t my-php-fpm .` и запустить контейнер с расширением mongodb с помощью команды `docker run -d my-php-fpm`.

Теперь у вас должен быть контейнер PHP-fpm с установленным расширением mongodb, который готов к использованию.

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

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

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

комментарий

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

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