Php Alpine linux的Libresolv依赖项
我有Alpine v3.7 Docker映像,简而言之,我正在为PHP安装OCI8扩展 在执行Php Alpine linux的Libresolv依赖项,php,oracle,docker,alpine,Php,Oracle,Docker,Alpine,我有Alpine v3.7 Docker映像,简而言之,我正在为PHP安装OCI8扩展 在执行php-v时,我得到以下错误: PHP警告:PHP启动:无法加载动态库“oci8.so” (审判: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so(错误 加载共享库libresolv.so.2:没有这样的文件或目录 (由/usr/local/instantclient/libclntsh.so.18.1所需), /usr/l
php-v
时,我得到以下错误:
PHP警告:PHP启动:无法加载动态库“oci8.so”
(审判:
/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so(错误
加载共享库libresolv.so.2:没有这样的文件或目录
(由/usr/local/instantclient/libclntsh.so.18.1所需),
/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.so
(加载共享库时出错。)
/usr/local/lib/php/extensions/no-debug-non-zts-20170718/oci8.so.so:no
该文件或目录)位于第0行的未知位置
我似乎找不到我必须安装什么软件包才能使它工作。我看到在我的/usr/lib/
文件夹中有一个libresolv.a
(我也搜索了一下,发现Alpine by defaut中没有libresolv.so.*
文件),所以我尝试将它链接回Oracle文件夹,但是这没有任何作用,我仍然收到相同的错误
以下是我正在Docker container create上安装的包:
RUN apk add --update \
autoconf gcc g++ make libaio-dev libnsl gettext-dev automake libtool libc6-compat;
问题是您使用的是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
Alpine版本不同,缺少依赖项也不同。问题是相同的“如何将Alpine与Oracle客户端一起使用”,答案是相同的“不要”:)问题是11g非常非常旧。Oracle数据库11g与instantclient_11不同。instantclient_11可以与最新的Oracle数据库(12c)、最新的Cx_Oracle(v7.3)和最新的Oci8(v2.x)一起使用,而且它很旧!自11g以来,客户端中有很多修复、功能改进和新功能。最新的即时客户端(19c)将连接到11.2 DB。总的来说,一旦您必须将所有必要的软件包安装到Alpine中,您就必须质疑是否有任何显著的规模优势超过了使用改进的客户端堆栈的优势和a的业务连续性优势。是的,您是对的,但这是一个解决方案,直到Libresolv的依赖性问题得到解决。