Зависимость Libresolv для Alpine linux

У меня есть образ Docker для Alpine v3.7, и, короче говоря, я устанавливаю расширение OCI8 для PHP.

При выполнении php -v я получаю следующую ошибку:

PHP Warning: PHP Startup: Unable to load dynamic library 'oci8.so' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so (Error loading shared library libresolv.so.2: No such file or directory (needed by /usr/local/instantclient/libclntsh.so.18.1)), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.so (Error loading shared library /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.so: No such file or directory)) in Unknown on line 0

Кажется, я не могу найти, какой пакет мне нужно установить, чтобы эта работа работала. Я видел, что в моей папке libresolv.a есть файл libresolv.so.* (я также искал здесь и увидел, что файла /usr/lib/ в Alpine по умолчанию нет) в моей папке php -v, поэтому я попытался символьно связать его с папкой Oracle, однако это ничего не дает, я по-прежнему получаю ту же ошибку.

Это пакеты, которые я устанавливаю в контейнере Docker:

RUN apk add --update \
    autoconf gcc g++ make libaio-dev libnsl gettext-dev automake libtool libc6-compat;

Версия Alpine отличается, и отсутствующие зависимости отличаются.

Norgul 14.11.2018 06:56

Проблема та же «как мне использовать Alpine с Oracle Client» и ответ тот же «не надо» :)

Christopher Jones 14.11.2018 08:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
2
3 978
1

Ответы 1

Проблема в том, что вы используете instaclient 18.

Используя Oracle instaclient 11, вам нужно только добавить

FROM alpine3.11

# Setup LD lib path 
ENV LD_LIBRARY_PATH=/usr/local/instantclient_11_2

# Install Apline dependencies
RUN apk add gcc libnsl libaio curl unzip openssl-dev autoconf musl-dev

RUN curl -k -o /tmp/basic.zip https://raw.githubusercontent.com/wilo087/Oracle-Instaclient_11_2/master/instantclient-basic-linux.x64-11.2.0.4.0.zip

# Unzip downloaded library
RUN unzip -d /usr/local/ /tmp/basic.zip

# Link Libs
RUN ln -sf ${LD_LIBRARY_PATH}/libclntsh.so.19.1 ${LD_LIBRARY_PATH}/libclntsh.so; \
  ln -s ${ORACLE_HOME}/libocci.so.* ${ORACLE_HOME}/libocci.so; \

# The libnsl version installed by Alpine is the number two, and instaclient use the number 1 so, create symbolic link for number one
RUN ln -sf /usr/lib/libnsl.so.2.0.0  /usr/lib/libnsl.so.1

Проблема в том, что 11g очень, очень и очень старый.

Christopher Jones 13.05.2020 01:06

База данных Oracle 11g - это не то же самое, что Instantclient_11. Instantclient_11 работает с последней версией базы данных Oracle (12c), последней версией Cx_Oracle (v7.3) для Python и последней версией Oci8 (v2.x) для PHP.

wilo087 14.05.2020 14:44

И он старый! С момента выпуска версии 11g в клиенте было внесено множество исправлений, улучшений функций и новых функций. Последний Instant Client (19c) будет подключаться к 11.2 DB. В целом, как только вам пришлось установить все необходимые пакеты в Alpine, вы должны задаться вопросом, есть ли какое-либо существенное преимущество в размере, которое перевешивает преимущества использования улучшенного стека клиентов и преимущества непрерывности бизнеса поддерживаемая ОС.

Christopher Jones 15.05.2020 00:16

Да, вы правы, но это решение, пока проблема зависимости с Libresolv не будет решена.

wilo087 15.05.2020 18:35

Другие вопросы по теме