如何使用XAMPP(PHP 8.0)实现CodeIgniter 4与SQL Server的连接
CodeIgniter 4 连接 SQL Server 完整分步指南
1. 安装PHP SQL Server扩展
CodeIgniter 4 依赖PHP的sqlsrv或pdo_sqlsrv扩展连接SQL Server,需先完成扩展安装:
- Windows环境
- 下载与你的PHP版本、系统架构(x86/x64)匹配的
sqlsrv和pdo_sqlsrv扩展文件 - 将扩展文件放到PHP安装目录的
ext文件夹中 - 打开
php.ini文件,添加以下两行后保存:extension=sqlsrv extension=pdo_sqlsrv - 重启Apache、Nginx或IIS等Web服务器
- 下载与你的PHP版本、系统架构(x86/x64)匹配的
- Linux环境
- 执行以下命令通过PECL安装扩展:
pecl install sqlsrv pdo_sqlsrv - 在
php.ini文件中添加扩展加载配置,重启Web服务器
- 执行以下命令通过PECL安装扩展:
- 验证扩展:创建含
phpinfo();的PHP文件,访问后确认页面存在sqlsrv和pdo_sqlsrv模块信息
2. 配置CodeIgniter 4数据库连接
方法一:修改配置文件
打开项目根目录下的app/Config/Database.php,找到$default数组,替换为如下配置:
public $default = [ 'DSN' => '', 'hostname' => 'localhost', // 远程连接填IP+端口,如'192.168.1.100,1433' 'username' => 'sa', // SQL Server用户名 'password' => 'your_password', // 数据库密码 'database' => 'your_database_name', // 目标数据库名称 'DBDriver' => 'sqlsrv', // 必须设置为sqlsrv 'DBPrefix' => '', 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'charset' => 'utf8', 'DBCollat' => '', 'swapPre' => '', 'encrypt' => false, // 需加密连接则设为true 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 1433, // SQL Server默认端口,自定义端口请修改 ];
方法二:使用环境变量(推荐)
复制项目根目录的.env.example并重命名为.env,添加以下配置:
database.default.DBDriver = sqlsrv database.default.hostname = localhost database.default.username = sa database.default.password = your_password database.default.database = your_database_name database.default.port = 1433
3. 测试数据库连接
创建测试控制器验证连接状态:
- 在
app/Controllers目录下新建TestDb.php,内容如下:
<?php namespace App\Controllers; use CodeIgniter\Database\Exceptions\DatabaseException; class TestDb extends BaseController { public function index() { $db = \Config\Database::connect(); try { $db->connect(); echo "<h3>SQL Server数据库连接成功!</h3>"; } catch (DatabaseException $e) { echo "<h3>连接失败:</h3>" . $e->getMessage(); } } }
- 启动CI4开发服务器或通过Web服务器访问
http://你的域名/testdb,查看输出结果
4. 常见问题排查
- 连接超时/失败:检查SQL Server是否允许远程连接、防火墙是否开放1433端口、用户名密码是否正确、目标数据库是否存在
- 扩展加载失败:确认PHP版本与扩展版本匹配,
php.ini中的扩展路径配置正确 - 字符乱码:将数据库字符集设为UTF-8,同时确保CI4配置中的
charset为utf8 - 加密连接问题:启用加密连接时,将配置中的
encrypt设为true,并确保SQL Server已开启SSL连接
内容的提问来源于stack exchange,提问作者Hitesh Prajapati
相关产品推荐
相关产品推荐

