当前位置: 首页 > news >正文

PHP Yii2 安装SQL Server扩展-MAC M4 Pro芯片

MAC M4 Pro芯片版本,千锤百炼编译十几次终于成功

# 设置基础镜像并强制使用 x86_64 架构(适配 M4 芯片)
FROM --platform=linux/amd64 php:8.1-fpm-alpine3.18WORKDIR /var/www/html# 可选:设置时区
ARG TZ=Asia/Shanghai
ENV TZ=${TZ}# 使用阿里云镜像源加速(国内用户推荐)
RUN sed -i 's/https:\/\/dl-cdn.alpinelinux.org\/alpine/https:\/\/mirrors.aliyun.com\/alpine/g' /etc/apk/repositories && \sed -i 's/v3\.18/latest-stable/g' /etc/apk/repositories# 安装常用工具和编译依赖(新增 unixodbc-dev)
RUN apk add --no-cache \tzdata \shadow \unzip \curl \gnupg \autoconf \make \g++ \re2c \unixodbc-dev   # 👈 必须添加这个包# 复制本地 .apk 包进容器
COPY ./msodbcsql17_17.10.6.1-1_amd64.apk /tmp/
COPY ./mssql-tools_17.10.1.1-1_amd64.apk /tmp/# 安装 Microsoft ODBC Driver 和工具
RUN apk add --allow-untrusted /tmp/msodbcsql17_17.10.6.1-1_amd64.apk && \apk add --allow-untrusted /tmp/mssql-tools_17.10.1.1-1_amd64.apk# 安装 SQLSRV 扩展(使用内置的 pecl)
RUN pecl install sqlsrv pdo_sqlsrv && \docker-php-ext-enable sqlsrv pdo_sqlsrv# 清理缓存
RUN rm -rf /tmp/* /var/cache/apk/*
#Download the desired package(s)
https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.10.1.1-1_amd64.apk

测试代码

<?php
try {$dbh = new PDO("sqlsrv:Server=***;Database=***", "***", "***");echo "Connected to SQL Server successfully!";
} catch (PDOException $e) {echo "Connection failed: " . $e->getMessage();
}


安装过程如下

Dockerfile

FROM php:8.1-fpm-alpineWORKDIR /var/www/htmlARG TZ=Asia/Shanghai
ENV TZ=${TZ}RUN apk add --no-cache \tzdata \shadow \unzip \curl \libjpeg-turbo \libpng \freetype \libzip \git \build-base \autoconf \automake \cmake \linux-headers \make \g++ \pkgconfig \unixodbc-dev \krb5-dev \openssl-dev \icu-dev \&& apk add --no-cache --virtual .build-deps \libjpeg-turbo-dev \libpng-dev \freetype-dev \zlib-dev \libzip-dev \# 安装 GD 扩展&& docker-php-ext-configure gd \--with-jpeg=/usr/include/ \--with-freetype=/usr/include/freetype2 \&& docker-php-ext-install -j$(nproc) \pdo_mysql \mysqli \gd \opcache \sockets \zip \pcntl \posix \# 安装 sqlsrv 和 pdo_sqlsrv&& pecl install sqlsrv pdo_sqlsrv \&& docker-php-ext-enable sqlsrv pdo_sqlsrv \# 清理构建依赖&& apk del .build-deps \&& rm -rf /tmp/* /var/cache/apk/* \# 设置时区&& cp "/usr/share/zoneinfo/${TZ}" /etc/localtime \&& echo "${TZ}" > /etc/timezone

7.4安装失败:

46.26 WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update 50.07 pecl/sqlsrv requires PHP (version >= 8.1.0), installed version is 7.4.33 50.07 pecl/pdo_sqlsrv requires PHP (version >= 8.1.0), installed version is 7.4.33 50.07 No valid packages found 50.07 install failed


这是由于微软从 2022 年起发布的 SQL Server 驱动只支持 PHP 8.1 及以上版本,不再为 PHP 7.x 提供官方支持。

我因为使用docker 所以直接升级改起

安装成功 启动

 1005  docker-compose  build php8
 1006  docker-compose  start php8
 1007  docker-compose  down
 1008  docker-compose  up -d
 


报错:因为我是M4芯片

yii\base\ErrorException: Unsupported processor architecture.

这是 PDO_SQLSRV 扩展的一个已知问题,常见于以下情况:

  • 使用了 不兼容的 PHP 架构(如 ARM)
  • 安装的 pdo_sqlsrv 和 sqlsrv 扩展版本与当前系统架构不匹配
  • 某些二进制包只支持 x86/x64 架构,而在 M1/M2(ARM)芯片上运行时会抛出此错误

需要使用

FROM --platform=linux/amd64 php:8.1-fpm-alpine

下载地址:

Install the Microsoft ODBC driver for SQL Server (Linux) - ODBC Driver for SQL Server | Microsoft Learn

MAC M系列芯片 完整Dockerfile 见顶部

Windows版

FROM php:8.1-fpm# 安装必要的依赖
RUN apt-get update && apt-get install -y \git \curl \wget \unzip \gnupg \locales \&& rm -rf /var/lib/apt/lists/*# 设置时区(可选)
RUN echo "date.timezone = Asia/Shanghai" > /usr/local/etc/php/conf.d/timezone.ini# 安装 Microsoft ODBC Driver for SQL Server
RUN curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - \&& curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list \&& apt-get update \&& ACCEPT_EULA=Y apt-get install -y msodbcsql17# 安装 unixODBC 开发文件
RUN apt-get install -y unixodbc-dev# 安装 sqlsrv 和 pdo_sqlsrv 扩展
RUN pecl install sqlsrv-5.9.0 pdo_sqlsrv-5.9.0 \&& docker-php-ext-enable sqlsrv pdo_sqlsrv

http://www.dtcms.com/a/264858.html

相关文章:

  • 在mac下手动编译迁移的android版webrtc组件
  • 信息论与编码期末重点
  • 板凳-------Mysql cookbook学习 (十一--------2)
  • 代码训练LeetCode(44)螺旋矩阵
  • 电脑一体机,收银机画面显示不全——深入解析 BIOS 配置电脑分辨率——东方仙盟
  • 「ECG信号处理——(20)基于心电和呼吸的因果分析模型」2025年7月2日
  • GC393低功耗双电压比较器:精准、高效的信号处理解决方案
  • Liunx 操作系统笔记4
  • MFC扩展库BCGControlBar Pro v36.2亮点:Ribbon Bar、表单等组件升级
  • Notepad++ 复制宏、编辑宏的方法
  • 微信小程序使用wx.chooseImage上传图片时进行压缩,并添加时间水印
  • HarmonyOS 页面路由Router切换组件导航Navigation
  • (第三篇)HMTL+CSS+JS-新手小白循序渐进案例入门
  • Axure常用交互功能案例-免费
  • 物联网实战:多语言(Java、Go、Rust、C++、C#、Rust)设备接入与数据处理
  • 嵌入式系统内核镜像相关(十)
  • 「日拱一码」015 机器学习常用库——scikit-learn
  • Deep semi-supervised learning for medical image segmentation: A review
  • 《解码人工智能:从理解到应用的变革之旅》
  • 当AR遇上深度学习:实时超声肾脏分割与测量技术全解析
  • Linux操作系统之文件(一):重识IO
  • FastAPI 安装使用教程
  • 通用编码器芯片 L1527产品介绍,低重码率,高安全性433解码芯片
  • 激活向量是什么
  • LCS4110R安全芯片防抄板原理
  • HTML初学者第二天
  • Spring-解决IDEA中无法创建JDK17一下的SpringBoot项目
  • 【计算机网络】补充
  • 04.Vue自定义组件制作详细指南
  • 【数据结构】排序算法:冒泡与快速