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

Laravel Sail安装MS SQL驱动后遇‘could not find driver’错误

解决Laravel Sail中MS SQL驱动"could not find driver"错误

问题根源分析

你的Dockerfile中存在命令执行逻辑错误,导致SQL Server PHP驱动没有被正确启用,这是出现"could not find driver"的核心原因。另外还需要确保驱动同时加载到PHP CLI和FPM环境中。


修复步骤

1. 修正Dockerfile中的驱动启用逻辑

你当前的Dockerfile里,su和exit命令会中断后续的phpenmod执行(因为su进入子shell后,exit回到原shell,后续命令不会被执行)。将对应的代码块替换为以下内容:

# Install the PHP drivers for Microsoft SQL Server
RUN curl -O https://pear.php.net/go-pear.phar \
     && php go-pear.phar

RUN pecl install sqlsrv \
    && pecl install pdo_sqlsrv \
    && printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini \
    && printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini \
    && phpenmod -v 8.1 sqlsrv pdo_sqlsrv

注:Dockerfile的RUN命令默认以root用户执行,无需额外su切换身份。

2. 强制为PHP CLI和FPM加载驱动

为避免驱动仅在单一环境生效,在Dockerfile末尾添加以下代码,确保CLI和FPM都能加载SQL Server驱动:

# 确保PHP CLI与FPM均加载SQL Server驱动
RUN echo "extension=sqlsrv.so" >> /etc/php/8.1/cli/php.ini \
    && echo "extension=pdo_sqlsrv.so" >> /etc/php/8.1/cli/php.ini \
    && echo "extension=sqlsrv.so" >> /etc/php/8.1/fpm/php.ini \
    && echo "extension=pdo_sqlsrv.so" >> /etc/php/8.1/fpm/php.ini

3. 重新构建并启动容器

执行以下命令彻底重建容器:

sail down -v
sail build --no-cache
sail up -d

4. 验证驱动是否成功加载

进入容器检查驱动状态:

# 检查CLI环境的驱动
sail exec laravel.test php -m | grep sqlsrv
# 检查PDO驱动
sail exec laravel.test php -i | grep pdo_sqlsrv

如果输出包含sqlsrv和pdo_sqlsrv,说明驱动已正确加载。

5. 确认.env配置正确性

确保MS SQL连接配置使用正确的驱动:

DB_CONNECTION=mssql
DB_HOST=你的MS SQL服务器地址
DB_PORT=1433
DB_DATABASE=目标数据库名
DB_USERNAME=数据库账号
DB_PASSWORD=数据库密码
# 若使用SQL Server认证,需添加以下配置
DB_ENCRYPT=true
DB_TRUST_SERVER_CERTIFICATE=true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:10:29