此环境,容器中php是通过apk快速安装的,其他扩展模块可以通过apk add php7-redis命令进行安装,Oracle模块需要编译安装
登入php容器执行以下命令:
# docker exec -it php7 /bin/bash
# apk php-devel php7-dev gcc musl-dev libnsl libaio g++ automake autoconf libtool make
# wget https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-basic-linux.x64-11.2.0.4.0.zip
# wget https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-sdk-linux.x64-11.2.0.4.0.zip
# wget http://pecl.php.net/get/oci8-2.1.8.tgz
#下载对应版本的二进制包
# wget https://www.php.net/distributions/php-7.1.33.tar.bz2
#解压包
# unzip instantclient-basic-linux.x64-11.2.0.4.0.zip
# unzip instantclient-sdk-linux.x64-11.2.0.4.0.zip
#会在当前目录下生成一个instantclient_11_2目录
# cd instantclient_11_2/
# ln -s libnnz11.so libnnz.so && ln -s libclntsh.so.11.1 libclntsh.so && ln -s libocci.so.11.1 libocci.so && cd .. && mv instantclient_11_2 /usr/local/lib/instantclient
# ln -s /usr/local/lib/instantclient/lib* /usr/lib && ln -s /usr/lib/libnsl.so.2.0.0 /usr/lib/libnsl.so.1
#安装oci8模块
# tar -xvf oci8-2.1.8.tgz
# cd oci8-2.1.8
# phpize && ./configure --with-php-config=/usr//bin/php-config --with-oci8=shared,instantclient,/usr/local/lib/instantclient && make && make install
# echo 'extension=oci8.so' >> /etc/php7/php.ini
# php -m|grep oci8
oci8
#安装pdo_oci模块
# tar -xvf php-7.1.33.tar.bz2 && cd php-7.1.33
# phpize && ./configure --with-php-config=/usr/bin/php-config --with-pdo-oci=instantclient,/usr/local/lib/instantclient && make && make install
由于pdo模块配置必须放在pdo_oci前面,pdo_oci模块才可以正常加载,所以把pdo模块文件删掉,加到php.ini配置文件上
# mv /etc/php7/conf.d/00_pdo.ini /tmp
# echo 'extension=pdo.so' >> /etc/php7/php.ini
# echo 'extension=pdo_oci.so' >> /etc/php7/php.ini
# php -m|grep OCI
PDO_OCI
至此安装成功