OctoberCMS搭配Laradoc连接MSSQL报找不到驱动错误如何排查
故障现象
使用OctoberCMS搭配Laradock环境、MSSQL作为项目数据库,按以下流程操作时,在安装向导的数据库创建步骤抛出[ERROR] Connection failed: could not find driver报错:
- 克隆Laradock到本地项目目录
- 配置Laradock的
.env文件,指定PHP版本为v8.1 - 执行
docker-compose up -d nginx mssql启动对应容器 - 进入容器后执行
php artisan october:install启动OctoberCMS安装流程 - 按安装向导提示逐步操作到数据库配置环节
当前OctoberCMS的.env数据库配置如下:
DB_CONNECTION=sqlsrv DB_HOST=mssql DB_PORT=3306 DB_DATABASE=mssql DB_USERNAME=root DB_PASSWORD=
故障原因
报错由两个核心问题导致:
- PHP容器未安装MSSQL(sqlsrv)对应的PDO驱动,PHP无法识别sqlsrv连接协议
- 数据库配置参数错误:MSSQL默认服务端口不是3306,且配置里的账号、库名是MySQL默认规则,和Laradock内置MSSQL容器的默认配置不匹配
解决步骤
1. 为PHP容器安装sqlsrv驱动
- 进入本地Laradock目录,打开目录下的
.env配置文件,找到WORKSPACE_INSTALL_MSSQL、PHP_FPM_INSTALL_MSSQL两个配置项,将值都修改为true - 停掉当前运行的容器,执行以下命令重新构建对应服务容器:
docker-compose stop docker-compose build workspace php-fpm
- 重新启动相关服务:
docker-compose up -d nginx mssql
- 验证驱动安装结果:进入workspace容器执行
php -m | grep sqlsrv,命令返回pdo_sqlsrv、sqlsrv两个结果即代表驱动安装完成
2. 修正数据库配置参数
打开OctoberCMS根目录的.env文件,将数据库配置修改为Laradock MSSQL容器的默认适配值:
DB_CONNECTION=sqlsrv DB_HOST=mssql DB_PORT=1433 DB_DATABASE=master DB_USERNAME=sa DB_PASSWORD=Laradock1!
如果你自定义过MSSQL容器的SA账号密码、初始化库名,直接替换为自定义值即可,不要保留原配置里3306端口、root账号这类MySQL专属参数
3. 重新执行安装流程
再次进入workspace容器,执行php artisan october:install重新走安装流程,数据库连接校验即可正常通过。
内容的提问来源于stack exchange,提问作者user3677558
相关产品推荐
相关产品推荐

