# docker-php-fpm **Repository Path**: liberty_lin/docker-php-fpm ## Basic Information - **Project Name**: docker-php-fpm - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-27 - **Last Updated**: 2021-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # php-fpm 开发环境 用于常规的 php 开发,基于 php-fpm + nginx。里面只包含了 redis 这个常用扩展的安装。 ## 添加其他扩展 ### pecl 压缩包安装 1. 到 pecl.php.net 网站搜索并下载需要的 tgz 扩展包,放置到 `pecl` 目录中 2. 打开已经实例的容器进行命令操作(解决可能碰到的依赖问题) ```shell # 进入容器 docker exec -it php74-fpm sh # 安装扩展,如有报错根据命令提交进行相关操作,操作后并安装成功就把关联操作添加到以下命令中 apk add gcc g++ autoconf make \ && printf "\n" | pecl install /var/www/pecl/yaf-3.3.3.tgz && docker-php-ext-enable yaf ``` 3. 修改 Dockerfile 文件中的安装扩展部分,把新命令添加到里执行中 4. 使用 docker-compose build 命令重新生成关联镜像 > Note: > > 我知道有 `pecl install` 命令,会出现请求失败,所以干脆自行下载包,后面换版本还可以复用。 ### 编译安装 和 pecl 安装过程类似,下面是命令的简化写法。 ```Dockerfile RUN apk add gcc g++ autoconf make \ && unzip pecl/swoole.zip -d pecl/swoole-src \ && ( \ cd pecl/swoole-src \ && phpize \ && ./configure \ --enable-openssl \ --enable-http2 \ && make && make install \ ) \ && docker-php-ext-enable swoole ``` 说明: 1. 安装扩展编译环境(需根据实际情况添加依赖) 2. 解压压缩包 3. 进入目录执行编译(在括号中进行操作并不会改变命令当前的位置) ## FQA ### iconv 无法正常使用 [php alpine libiconv 中文编码错误](https://github.com/HenryQW/Awesome-TTRSS/issues/98) [gnu-libiconv 1.16-r0 不存在 preloadable_libiconv.so 文件](https://gitlab.alpinelinux.org/alpine/aports/-/issues/12328) [Alpine 3.13 使用 iconv](https://github.com/docker-library/php/issues/1121) 最终解决方法: 使用 aplpine-3.13 版本并安装 1.15-r3 的 gnu-libiconv ```dockerfile RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.13/community/ gnu-libiconv=1.15-r3 ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php ```