PHP 扩展列表

March 12, 2022 · View on GitHub

更多扩展请通过 $ php -m 查看

如果你需要增加其他扩展,请到这里 issues 反馈。

pecl 扩展

核心扩展

  • mysql 7.0 移除
  • mcrypt 7.2 移除
  • interbase 7.4 移除
  • wddx 7.4 移除
  • recode 7.4 移除
  • xmlrpc 8.0 移除

自行增加扩展

以下两种方式任选一种,然后按照 自定义 替换为自己的镜像,具体实例可以 参考这里

1. 基于 khs1994/php:X.Y.Z-TYPE-alpine 重新构建镜像

ARG PHP_VERSION=7.3.17
ARG USERNAME=khs1994

FROM ${USERNAME}/php:${PHP_VERSION}-fpm-alpine

# 扩展源码在 PHP 源码
ENV PHP_CORE_EXT \
    xsl

# pecl 扩展
# 如果 PHP 版本已经 EOL,建议加上版本号,因为新的扩展可能不再兼容旧的 PHP 版本
ENV PHP_PECL_EXT \
    xxx \
    xxx2-beta \
    xxx3-x.y.z

ENV EXT_BUILD_DEP \
    xxx-dev

ENV EXT_RUN_DEP \
    xxx

ARG ALPINE_URL=dl-cdn.alpinelinux.org

RUN set -x \
    && sed -i "s/dl-cdn.alpinelinux.org/${ALPINE_URL}/g" /etc/apk/repositories \
    # 安装构建依赖,构建之后可以删除
    && apk add --no-cache --virtual .pecl_build_deps $EXT_BUILD_DEP $PHPIZE_DEPS \
    # 安装运行依赖,不可以删除
    && apk add --no-cache $EXT_RUN_DEP \
    # !请自行编辑以下内容
    # 解压 PHP 源码,仅当扩展源码在 PHP 源码中时需要
    # && docker-php-source extract \
    #
    # 5.6 | 7.0
    #
    # && docker-php-ext-configure XXX --XXX \
    && docker-php-ext-install $PHP_CORE_EXT \
    && docker-php-ext-enable $PHP_CORE_EXT \
    && for extension in ${PHP_PECL_EXT};do \
         ext_real_name=$(echo ${extension} | cut -d '-' -f 1) \
         && pecl install $extension \
         && docker-php-ext-enable $ext_real_name || echo "pecl ${extension} install error" \
         && rm -rf /usr/local/lib/php/doc/$ext_real_name \
         && rm -rf /usr/local/lib/php/test/$ext_real_name \
         && rm -rf /usr/local/include/php/ext/$ext_real_name \
         && strip --strip-all $(php-config --extension-dir)/$ext_real_name.so ; \
       done \
    #
    # 7.1 + 可以使用 pickle 安装 PHP 扩展
    #
    # && echo "--xxx" > /tmp/EXT_NAME.configure.options \
    && pickle install $PHP_CORE_EXT $PHP_PECL_EXT -n --defaults --strip --cleanup \
    # !请自行编辑以上内容
    # 清理
    && docker-php-source delete \
    && apk del --no-network .pecl_build_deps \
    && rm -rf /tmp/* \
    && rm -rf /usr/local/lib/php/.registry/.channel.pecl.php.net/* \
    # 验证
    && php -m \
    && ls -la $(php-config --extension-dir)
    # !请自行编辑以下内容
    # 默认不启用的扩展可以将配置文件改为不以 .ini 结尾的文件名
    # && mv /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
    #     /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini.default

2. 使用 Dockerfile 重头构建

# 这里只列出基本参数,其他参数按需自行添加
$ docker buildx build \
  --build-arg PHP_EXTENSION_EXTRA="xsl" \
  --build-arg PECL_EXTENSION_EXTRA="imagick msgpack" \
  --build-arg APK_EXTRA="libxslt imagemagick-libs musl" \
  --build-arg APK_DEV_EXTRA="libxslt-dev imagemagick imagemagick-dev" \
  --build-arg PHP_VERSION="X.Y.Z" \
  --build-arg USERNAME=${USERNAME:?USERNAME must set} \
  --build-arg ALPINE_URL=${ALPINE_URL:-dl-cdn.alpinelinux.org} \
  --push \
  -t USERNAME/php:X.Y.Z-TYPE-alpine FOLDER

官方扩展列表

$ 进入 PHP 源码目录 ext 目录

$ docker run -it -d khs1994/php-fpm:7.2.4-alpine3.7

# 记住 container id ,并替换下边命令的 CONTAINER_ID

$ for ext in `ls`; do echo '*' $( docker exec -it CONTAINER_ID php -r "if(extension_loaded('$ext')){echo '[x] $ext';}else{echo '[ ] $ext';}" ); done

$ docker rm -f CONTAINER_ID
  • bcmath
  • bz2
  • calendar
  • com_dotnet
  • ctype
  • curl
  • date
  • dba
  • dom
  • enchant
  • exif
  • ext_skel.php
  • ffi
  • fileinfo
  • filter
  • ftp
  • gd
  • gettext
  • gmp
  • hash
  • iconv
  • imap
  • intl
  • json
  • ldap
  • libxml
  • mbstring
  • mysqli
  • mysqlnd
  • oci8
  • odbc
  • opcache
  • openssl
  • pcntl
  • pcre
  • pdo
  • pdo_dblib
  • pdo_firebird
  • pdo_mysql
  • pdo_oci
  • pdo_odbc
  • pdo_pgsql
  • pdo_sqlite
  • pgsql
  • phar
  • posix
  • pspell
  • readline
  • reflection
  • session
  • shmop
  • simplexml
  • skeleton
  • snmp
  • soap
  • sockets
  • sodium
  • spl
  • sqlite3
  • standard
  • sysvmsg
  • sysvsem
  • sysvshm
  • tidy
  • tokenizer
  • xml
  • xmlreader
  • xmlrpc
  • xmlwriter
  • xsl
  • zend_test
  • zip
  • zlib

Session Redis 驱动

session.save_handler = redis

session.save_path ="tcp://redis:6379?auth=redis密码"

More Information