进入到php-fpm的bash界面
docker exec -it 4c4a49e231dd /bin/bash
docker-php-source
此命令,实际上就是在PHP容器中创建一个/usr/src/php的目录,里面放了一些自带的文件而已。我们就把它当作一个从互联网中下载下来的PHP扩展源码的存放目录即可。事实上,所有PHP扩展源码扩展存放的路径: /usr/src/php/ext 里面。
docker-php-ext-enable
这个命令,就是用来启动 PHP扩展 的。我们使用pecl安装PHP扩展的时候,默认是没有启动这个扩展的,如果想要使用这个扩展必须要在php.ini这个配置文件中去配置一下才能使用这个PHP扩展。而 docker-php-ext-enable 这个命令则是自动给我们来启动PHP扩展的,不需要你去php.ini这个配置文件中去配置。
1. amqp扩展安装成功以后需要手动到php.ini里面去配置 "extension=amqp.so"
2. 使用 docker-php-ext-enable 命令的的话可以直接 # docker-php-ext-enable amqp
安装redis扩展的例子:
# 查看现有可以启动的扩展
root@4c4a49e231dd:/var/www/html# ls /usr/local/lib/php/extensions/no-debug-non-zts-20170718/
amqp.so gd.so mysqli.so oci8.so opcache.so pdo_mysql.so pdo_oci.so redis.so sodium.so zip.so
root@4c4a49e231dd:/var/www/html#
# 查看redis 扩展是否可以启动
root@4c4a49e231dd:/var/www/html# php -m | grep redis
root@4c4a49e231dd:/var/www/html#
# 启动 redis 扩展
root@4c4a49e231dd:/var/www/html# docker-php-ext-enable redis
# 启动 成功
root@4c4a49e231dd:/var/www/html# php -m | grep redis
redis
root@4c4a49e231dd:/var/www/html#
#说明,php容器中默认是没有php.ini配置文件的,加载原理如下所示
root@4c4a49e231dd:/var/www/html# php -i | grep -A 5 php.ini
Configuration File (php.ini) Path => /usr/local/etc/php
Loaded Configuration File => (none)
# 核心是 /usr/local/etc/php/conf.d 目录下的扩展配置文件
Scan this dir for additional .ini files => /usr/local/etc/php/conf.d
Additional .ini files parsed => /usr/local/etc/php/conf.d/docker-php-ext-redis.ini,
/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
root@517b9c67507a:/usr/local/etc/php#
docker-php-ext-install
这个命令,是用来安装并启动PHP扩展的。
命令格式:
docker-php-ext-install “源码包目录名”,例如:docker-php-ext-install redis
注意点:
“源码包“需要放在 /usr/src/php/ext 下
默认情况下,PHP容器没有 /usr/src/php这个目录,需要使用 docker-php-source extract来生成。
docker-php-ext-install 安装的扩展在安装完成后,会自动调用docker-php-ext-enable来启动安装的扩展。
卸载扩展,直接删除/usr/local/etc/php/conf.d 对应的配置文件即可。
# 卸载redis 扩展
root@4c4a49e231dd:/var/www/html# rm -rf /usr/local/etc/php/conf.d/docker-php-ext-redis.ini
root@4c4a49e231dd:/var/www/html# php -m
# 安装redis 扩展
#PHP容器默认是没有redis扩展的。所以我们通过docker-php-ext-install安装redis扩展
root@4c4a49e231dd::/# curl -L -o /tmp/reids.tar.gz https://codeload.github.com/phpredis/phpredis/tar.gz/5.0.2
root@4c4a49e231dd::/# cd /tmp
root@4c4a49e231dd::/tmp# tar -xzf reids.tar.gz
root@4c4a49e231dd::/tmp# ls
phpredis-5.0.2 reids.tar.gz
root@4c4a49e231dd::/tmp# docker-php-source extract
root@4c4a49e231dd::/tmp# mv phpredis-5.0.2 /usr/src/php/ext/phpredis
#检查移过去的插件源码包是否存在
root@4c4a49e231dd::/tmp# ls -l /usr/src/php/ext | grep redis
drwxrwxr-x 10 root root 4096 Feb 9 05:37 phpredis
root@4c4a49e231dd::/tmp# docker-php-ext-install phpredis
# 检查redis 扩展是否已经安装上
root@4c4a49e231dd::/tmp# php -m | grep redis
redis
root@4c4a49e231dd::/tmp#