首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Alpinelinux下编译OCI8扩展

在Alpinelinux下编译OCI8扩展
EN

Stack Overflow用户
提问于 2016-07-05 23:10:35
回答 4查看 3.5K关注 0票数 4

我正在尝试编译PHP OCI8 extension并在Alpinelinux下运行它。但是扩展似乎依赖于在glibc中定义的符号,但在musl libc中却没有。

有没有我可以使用的已编译的PHP OCI8扩展?或者有什么变通方法可以让oci8扩展和oracle即时客户端在alpinelinux上工作。

提前感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-08-10 23:39:26

我对阿尔卑斯的解决方案很简单:使用即时客户端v11 (11.2.0.4)而不是v12 (12.2.0.1):

代码语言:javascript
复制
ENV LD_LIBRARY_PATH /usr/local/instantclient
ENV ORACLE_HOME /usr/local/instantclient

# Install Oracle Client and build OCI8 (Oracle Command Interface 8 - PHP extension)

RUN apk add php7-pear php7-dev gcc musl-dev libnsl libaio &&\
## Download and unarchive Instant Client v11
  curl -o /tmp/basic.zip https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-basic-linux.x64-11.2.0.4.0.zip && \
  curl -o /tmp/sdk.zip https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-sdk-linux.x64-11.2.0.4.0.zip && \
  curl -o /tmp/sqlplus.zip https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-sqlplus-linux.x64-11.2.0.4.0.zip && \
  unzip -d /usr/local/ /tmp/basic.zip && \
  unzip -d /usr/local/ /tmp/sdk.zip && \
  unzip -d /usr/local/ /tmp/sqlplus.zip && \
## Links are required for older SDKs
  ln -s /usr/local/instantclient_11_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 &&\
## Build OCI8 with PECL
  echo "instantclient,${ORACLE_HOME}" | pecl install oci8 &&\
  echo 'extension=oci8.so' > /etc/php7/conf.d/30-oci8.ini &&\
#  Clean up
  apk del php7-pear php7-dev gcc musl-dev &&\
  rm -rf /tmp/*.zip /var/cache/apk/* /tmp/pear/
票数 5
EN

Stack Overflow用户

发布于 2017-10-30 19:35:09

尝试这些命令。

它在阿尔卑斯山的Docker下工作。

但是,您必须安装GLIB高山兼容层:https://github.com/sgerrand/alpine-pkg-glibc

代码语言:javascript
复制
# Install OCI8
COPY ./oracle-sdk /tmp/oracle-sdk
RUN apk add --no-cache libaio-dev && \
unzip /tmp/oracle-sdk/instantclient-basic-linux.x64-12.2.0.1.0.zip -d /usr/local/ && \
unzip /tmp/oracle-sdk/instantclient-sdk-linux.x64-12.2.0.1.0.zip -d /usr/local/ && \
unzip /tmp/oracle-sdk/instantclient-sqlplus-linux.x64-12.2.0.1.0.zip -d /usr/local/ && \
ln -s /usr/local/instantclient_12_2 /usr/local/instantclient && \
ln -s /usr/local/instantclient/libclntsh.so.* /usr/local/instantclient/libclntsh.so && \
ln -s /usr/local/libclntshcore.so.* /usr/local/instantclient/libclntshcore.so && \
ln -s /usr/local/instantclient/libocci.so.* /usr/local/instantclient/libocci.so && \
ln -s /usr/local/instantclient/sqlplus /usr/bin/sqlplus && \
docker-php-ext-configure oci8 --with-oci8=instantclient,/usr/local/instantclient && \
docker-php-ext-install oci8 && \
rm -rf /tmp/oracle-sdk
票数 4
EN

Stack Overflow用户

发布于 2016-07-22 10:07:49

尝试过阿尔卑斯山的人还没有找到一种方法。该问题并非PHP所特有,因此请检查也使用Oracle Instant Client的其他语言,并已尝试使用高山语言。例如,请参阅阿尔卑斯山问题https://github.com/sgerrand/alpine-pkg-glibc/issues/31

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38206964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档