1.进入docker容器
docker exec -it 容器名 /bin/bash
2.创建并初始化 /usr/src/php目录
docker-php-source extract
cd /tmp
3.下载扩展 下载扩展地址:https://pecl.php.net/package/pdo_sqlsrv
curl -L -o /tmp/pdo_sqlsrc.tgz https://pecl.php.net/get/pdo_sqlsrv-5.9.0.tgz
curl -L -o /tmp/sqlsrc.tgz https://pecl.php.net/get/sqlsrv-5.9.0.tgz
4.解压
tar zxvf pdo_sqlsrv-5.9.0.tgz
tar zxvf sqlsrv-5.9.0.tgz
5.移动到php扩展目录
mv pdo_sqlsrv-5.9.0 /usr/src/php/ext/pdo_sqlsrv
mv sqlsrv-5.9.0 /usr/src/php/ext/qlsrv
6.安装sudo
apt-get update
apt-get install sudo
7.使用sudo安装ODBC
sudo apt-get install unixodbc-dev
8.安装扩展
docker-php-ext-install pdo_sqlsrv
docker-php-ext-install sqlsrv
9.查看扩展是否安装上
php -m |grep sqlsrv
10.重启php容器,扩展已经安装完毕
Tip:下面是命令使用的示例,在解决问题时发现的一些好玩的。可以记录下来试验下。
1.docker-php-source extract | delete
说明:
此命令,实际上就是在PHP容器中创建一个/usr/src/php的目录,里面放了一些自带的文件而已。我们就把它当作一个从互联网中下载下来的PHP扩展源码的存放目录即可。事实上,所有PHP扩展源码扩展存放的路径: /usr/src/php/ext 里面。
参数说明:
* extract : 创建并初始化 /usr/src/php目录
* delete : 删除 /usr/src/php目录
案例:
root@803cbcf702a4:/usr/src# ls -l
#此时,并没有php目录
-rw-r--r-- 1 root root 12176404 Jun 28 03:23 php.tar.xz
-rw-r--r-- 1 root root 801 Jun 28 03:23 php.tar.xz.asc
root@803cbcf702a4:/usr/src# docker-php-source extract
root@803cbcf702a4:/usr/src# ls -l
#此时,生产了php目录
drwxr-xr-x 14 root root 4096 Aug 9 09:01 php
-rw-r--r-- 1 root root 12176404 Jun 28 03:23 php.tar.xz
-rw-r--r-- 1 root root 801 Jun 28 03:23 php.tar.xz.asc
root@803cbcf702a4:/usr/src# docker-php-source delete
root@803cbcf702a4:/usr/src# ls -l
#此时,将已创建 php 目录给删除了
-rw-r--r-- 1 root root 12176404 Jun 28 03:23 php.tar.xz
-rw-r--r-- 1 root root 801 Jun 28 03:23 php.tar.xz.asc
2.docker-php-ext-enable
这个命令,就是用来启动 PHP扩展 的。我们使用pecl安装PHP扩展的时候,默认是没有启动这个扩展的,如果想要使用这个扩展必须要在php.ini这个配置文件中去配置一下才能使用这个PHP扩展。而 docker-php-ext-enable 这个命令则是自动给我们来启动PHP扩展的,不需要你去php.ini这个配置文件中去配置。
案例
# 查看现有可以启动的扩展
root@517b9c67507a:/usr/local/etc/php# ls /usr/local/lib/php/extensions/no-debug-non-zts-20170718/
opcache.so redis.so sodium.so
root@517b9c67507a:/usr/local/etc/php#