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

WSL2 Ubuntu24.04下Laravel连接SQL Server报could not find driver错误

Laravel Sail连接SQL Server提示"could not find driver"的排查方案

核心注意点:WSL本地PHP与Sail容器PHP是独立环境

你在WSL本地安装的PHP扩展和Laravel Sail容器内的PHP环境完全分离——本地php -m看到的扩展加载状态,和容器里的PHP没有关联,这是最容易忽略的问题。


具体排查与解决步骤

  • 1. 检查Sail容器内的PHP扩展是否加载
    执行以下命令进入容器并查看扩展状态:

    sail exec laravel.test php -m | grep sqlsrv
    

    如果输出里没有pdo_sqlsrv和sqlsrv,说明容器内未安装对应扩展,需要进行下一步操作。

  • 2. 修改Dockerfile,在Sail容器内安装SQL Server扩展与ODBC驱动
    在项目根目录的Dockerfile中,添加以下内容(放在PHP扩展安装相关代码段后):

    # 安装Microsoft ODBC驱动依赖
    RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
        && curl https://packages.microsoft.com/config/ubuntu/24.04/prod.list > /etc/apt/sources.list.d/mssql-release.list \
        && apt-get update \
        && ACCEPT_EULA=Y apt-get install -y msodbcsql18 unixodbc-dev
    
    # 安装并启用sqlsrv、pdo_sqlsrv扩展
    RUN pecl install sqlsrv pdo_sqlsrv \
        && docker-php-ext-enable sqlsrv pdo_sqlsrv
    

    然后重新构建容器:

    sail build --no-cache
    
  • 3. 验证容器内PHP配置
    进入容器查看PHP配置文件路径,确认扩展已被正确启用:

    sail exec laravel.test php --ini
    

    找到输出中的Loaded Configuration File,查看该文件内是否存在extension=pdo_sqlsrv.so和extension=sqlsrv.so(使用docker-php-ext-enable会自动添加,一般无需手动修改)。

  • 4. 确认Laravel数据库配置准确性

    • 确保.env文件中DB_CONNECTION的值为sqlsrv,而非mysql或其他;
    • 检查DB_HOST、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD与DBeaver的连接参数完全一致。如果是连接Windows主机上的SQL Server,DB_HOST需设置为host.docker.internal。
  • 5. 清理Laravel配置缓存
    执行命令清理缓存,避免旧配置干扰:

    sail artisan config:clear
    sail artisan cache:clear
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:41:10