You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure App Service(PHP 8.2/Linux)中安装php-ssh2扩展?

在Azure App Service(Linux + PHP 8.2)中安装php-ssh2扩展的解决方法

针对你安装php-ssh2时遇到的「Not candidate version」问题,原因是默认软件仓库没有适配PHP 8.2的预编译包,下面是两种可行的解决办法:

方法一:自定义启动脚本编译安装(快速验证)

  • 登录Azure门户,进入你的App Service资源,在配置 > 常规设置里,将启动命令设为./startup.sh(如果之前有其他命令,直接替换)。
  • 打开Kudu控制台(地址是https://<你的应用名称>.scm.azurewebsites.net/),进入site/wwwroot目录,创建startup.sh脚本,粘贴以下内容:
#!/bin/bash

# 安装编译所需依赖
apt-get update && apt-get install -y libssh2-1-dev gcc make php8.2-dev

# 安装适配PHP8.2的ssh2版本
pecl install ssh2-1.3.1

# 添加扩展配置到PHP配置文件
echo "extension=ssh2.so" >> /etc/php/8.2/cli/php.ini
echo "extension=ssh2.so" >> /etc/php/8.2/fpm/php.ini

# 重启PHP-FPM使配置生效
service php8.2-fpm restart
  • 给脚本添加执行权限:chmod +x startup.sh
  • 重启App Service,等待编译安装完成后,可在Kudu控制台执行php -m查看是否包含ssh2扩展。

方法二:自定义Docker镜像(长期稳定部署)

如果你的应用需要频繁重启或缩放,方法一每次重启都要重新编译,推荐用自定义镜像:

  • 创建Dockerfile,内容如下:
FROM mcr.microsoft.com/appsvc/php:8.2-apache_20240507

# 安装依赖、编译ssh2扩展,并清理冗余包
RUN apt-get update && apt-get install -y libssh2-1-dev gcc make php8.2-dev \
    && pecl install ssh2-1.3.1 \
    && echo "extension=ssh2.so" >> /etc/php/8.2/apache2/php.ini \
    && apt-get remove --purge -y gcc make php8.2-dev \
    && apt-get autoremove -y \
    && rm -rf /var/lib/apt/lists/*
  • 构建镜像并推送到Azure Container Registry,然后在App Service的部署中心切换为使用自定义镜像部署即可。

注意事项

  • 务必指定兼容PHP8.2的ssh2版本(1.3.1是经过验证的稳定版,最新版本可自行确认兼容性)。
  • 使用方法一时,若开启了自动缩放,每个新实例启动时都会执行脚本安装扩展。

内容的提问来源于stack exchange,提问作者Uhmazing34

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 02:02:45