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

在PHP 8+版本的Azure App Service中安装自定义PHP扩展

在Azure App Service Linux环境中持久化安装PHP自定义扩展

核心逻辑

Azure App Service Linux的PHP运行时基于预定义Docker容器,重启会重置容器环境,所以必须把扩展安装逻辑集成到应用部署/启动流程,不能依赖手动SSH临时操作。

可行实现方案

方案1:自定义启动脚本(推荐轻量场景)

利用App Service的启动命令功能,让容器启动时自动安装扩展:

  1. 在应用根目录创建startup.sh脚本,内容示例:
# 安装ImageMagick及PHP扩展
apt-get update && apt-get install -y imagemagick php-imagick -qq
# 启动默认服务(Apache环境用这个)
exec /usr/sbin/apache2ctl -D FOREGROUND
# 若为FPM环境,替换成:exec php-fpm
  1. 在Azure门户的应用服务「配置-常规设置」里,把启动命令设为./startup.sh。
  2. 确保脚本有执行权限:部署时可通过chmod +x startup.sh设置,或在CI/CD流程中添加该步骤。

方案2:构建自定义Docker镜像(适合复杂环境)

如果需要更深度的环境定制,直接基于官方镜像构建自己的镜像:

# 基于Azure官方PHP 8.1镜像
FROM mcr.microsoft.com/appsvc/php:8.1-fpm_20230908
# 安装ImageMagick扩展
RUN apt-get update && apt-get install -y imagemagick php-imagick -qq
# 复制应用代码到容器指定目录
COPY . /home/site/wwwroot

把镜像推送到Azure容器注册表后,在App Service配置中切换为使用该自定义镜像即可。

方案3:PECL编译安装(针对无系统包的特殊扩展)

如果目标扩展不在系统软件源中,用PECL编译安装:
在启动脚本中添加以下内容:

# 安装编译依赖
apt-get update && apt-get install -y gcc make autoconf libpng-dev imagemagick libmagickwand-dev -qq
# 编译安装扩展
pecl install imagick
# 写入扩展配置,确保PHP加载
echo "extension=imagick.so" > /usr/local/etc/php/conf.d/imagick.ini

重要注意事项

  • 启动脚本必须用exec启动主服务,否则容器会启动后立即退出。
  • 安装命令添加-qq参数可减少冗余输出,避免启动日志溢出。
  • 自定义镜像需定期更新基础镜像,同步安全补丁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:01:04