如何在Alpine Docker镜像中安装php8.0-ssh2扩展
问题原因
你当前使用的ssh2 1.2版本仅适配PHP 7.x系列,不兼容PHP 8.0+,因此原有安装方案执行后扩展无法正常加载。
可行安装方案
将libssh2-dev合并到原有构建依赖段,安装适配PHP 8.0的ssh2 1.3.1版本即可,同时可减少镜像分层、避免残留构建工具。
修改后的完整构建命令如下:
RUN apk add --no-cache mysql-client msmtp perl wget procps shadow libzip libpng libjpeg-turbo libwebp freetype icu libssh2 RUN apk add --no-cache --virtual build-essentials \ icu-dev icu-libs zlib-dev g++ make automake autoconf libzip-dev libssh2-dev \ libpng-dev libwebp-dev libjpeg-turbo-dev freetype-dev && \ docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg --with-webp && \ docker-php-ext-install gd && \ docker-php-ext-install mysqli && \ docker-php-ext-install pdo_mysql && \ docker-php-ext-install intl && \ docker-php-ext-install opcache && \ docker-php-ext-install exif && \ docker-php-ext-install zip && \ # 安装适配PHP8的ssh2扩展 pecl install ssh2-1.3.1 && \ docker-php-ext-enable ssh2 && \ # 清理构建缓存和依赖 apk del build-essentials && rm -rf /usr/src/php* /tmp/pear/*
备选方案(PECL网络异常时使用)
如果PECL源访问失败,可以直接通过源码编译安装,替换上述代码中pecl安装的部分即可:
# 下载源码编译安装ssh2扩展 wget https://pecl.php.net/get/ssh2-1.3.1.tgz && \ tar -xf ssh2-1.3.1.tgz && \ cd ssh2-1.3.1 && \ phpize && \ ./configure && \ make && make install && \ docker-php-ext-enable ssh2 && \ cd .. && rm -rf ssh2-1.3.1 ssh2-1.3.1.tgz
验证方式
镜像构建完成后,执行命令 php -m | grep ssh2,正常输出ssh2即表示扩展安装成功。
内容的提问来源于stack exchange,提问作者FloWebDev
相关产品推荐
相关产品推荐

