Я пытаюсь установить расширение 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) в Unknown в строке 0
Версия PHP - 7.1.12
.
То, что я пробовал, делает apk add libnsl
, но это возвращает мне эту ошибку:
ОШИБКА: невыполнимые ограничения: итак: libtirpc.so.3 (отсутствует):
Поэтому я попытался также добавить apk add libtirpc-dev
("простой" libtirpc
недоступен для моей версии или чего-то в этом роде), но это ничего не изменило.
Какие-нибудь подсказки?