当前位置: 首页 > 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.lryc.cn/news/578987.html

相关文章:

  • 【AI论文】SPIRAL:零和博弈中的自对弈通过多智能体多轮强化学习激励推理能力
  • 场外交易(OTC)财富管理系统开发及解决方案报告
  • 【Part 3 Unity VR眼镜端播放器开发与优化】第四节|高分辨率VR全景视频播放性能优化
  • 腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE MySQL版)
  • 电子电气架构 --- SOVD功能简单介绍
  • 二、jenkins之idea提交项目到gitlab、jenkins获取项目
  • 【NLP第二期中文分词技术:规则、统计与混合方法全解】
  • 设计模式精讲 Day 23:访问者模式(Visitor Pattern)
  • uniapp实现图片预览,懒加载
  • React Native 安卓、苹果、鸿蒙5.0 三端适配方案:条件编译 + 平台适配层
  • 信创版nhdeep档案管理系统单机版在银河麒麟桌面系统安装和使用说明
  • UI前端与数字孪生结合探索:智慧建筑的能耗管理与优化
  • 【论文阅读39】PINN求边坡内时空变化的地震动响应(位移、速度、加速度)场分布
  • npm代理设置 + npm配置镜像源
  • Node.js、npm 与 nvm 使用全指南:安装、版本管理与开发环境配置详解
  • 在 Docker Desktop 使用 Kubernetes
  • RuoYi框架低代码特性
  • 鸿蒙自定义相机的拍照页面
  • 深入理解 LoRA:大语言模型微调的低秩魔法
  • 智能合约状态快照技术:实现 EVM 状态的快速同步与回滚
  • YOLOv8模型结构构件及问题汇总【持久更新】
  • HarmonyOS应用开发高级认证知识点梳理 (四)状态管理V2应用级状态
  • 商品中心—18.库存分桶的一致性改造文档
  • GIT基础命令和分支管理
  • Linux环境下使用 C++ 与 OpenCV 实现 ONNX 分类模型推理
  • ESP32与树莓派C++、Rust开发实战
  • 在米联客4EV上部署tinyriscv
  • 高速公路闲置土地资源化利用:广西浦北互通3MW分布式光伏监控实践
  • 基于大模型的急性重症胰腺炎全流程预测与诊疗方案研究
  • 从暴力穷举到智能导航,PC本地搜索被腾讯电脑管家“拯救”