Docker php安装扩展步骤

进入到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#

你可能感兴趣的:(Docker php安装扩展步骤)