Я пытаюсь установить расширение OCI8 в моей среде Alpine Linux Docker. Хотя есть несколько мест, где говорят, что это не сработает, есть и такие, которые говорят, что это действительно работает. У меня есть версия 3.4
, и по корпоративным причинам она пока остается такой.
Я сделал это в моем Docker Conf:
# Install Oracle Client and build OCI8 (Oracel Command Interface 8 - PHP extension)
USER root
ENV LD_LIBRARY_PATH=/usr/local/instantclient
ENV ORACLE_HOME=/usr/local/instantclient
RUN apk update && apk upgrade
RUN apk add musl-dev libaio autoconf && apk add --update make
## Unzip Instant Client v12
RUN pecl channel-update pecl.php.net
COPY instantclient_12_2.zip /var/www/html/instantclient_12_2.zip
RUN unzip -d /usr/local/ /var/www/html/instantclient_12_2.zip
RUN ln -s /usr/local/instantclient_12_2 /${ORACLE_HOME} && \
ln -s /${ORACLE_HOME}/libclntsh.so.* /${ORACLE_HOME}/libclntsh.so && \
ln -s /${ORACLE_HOME}/libocci.so.* /${ORACLE_HOME}/libocci.so && \
ln -s /${ORACLE_HOME}/lib* /usr/lib && \
ln -s /${ORACLE_HOME}/sqlplus /usr/bin/sqlplus &&\
ln -s /usr/lib/libnsl.so.2.0.0 /usr/lib/libnsl.so.1
RUN apk add gcc; exit 0 # This has a history of failing sometimes
RUN echo "instantclient,/usr/local/instantclient" | pecl install oci8 &&\
echo 'extension=oci8.so' > /usr/local/etc/php/conf.d/30-oci8.ini &&\
rm -rf /tmp/*.zip /var/cache/apk/* /tmp/pear/
Теперь сборка проходит и выглядит нормально, однако, когда я делаю php -v
, я получаю следующее:
Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку
'/usr/local/lib/php/extensions/no-debug-non-zts-20160303/oci8.so' -
Ошибка загрузки общей библиотеки libnsl.so.1: нет такого файла или каталога
(необходимо для /usr/local/instantclient/libclntsh.so.12.1) в Неизвестно на
строка 0
Версия PHP 7.1.12
.
Я пытался сделать apk add libnsl
, но это возвращает мне эту ошибку:
ОШИБКА: неудовлетворительные ограничения: так: libtirpc.so.3 (отсутствует):
Поэтому я попытался также добавить apk add libtirpc-dev
(«обычный» libtirpc
недоступен для моей версии или чего-то еще), но это ничего не изменило.
Есть какие-нибудь подсказки?