求助:如何在域名环境下通过PHP连接自有SQL Server?
嘿,我明白你折腾这些环境的烦躁——WAMP/XAMPP自带的本地服务确实没法直接连外部SQL Server,IIS搭PHP又容易踩各种配置坑。我给你一套极简的本地PHP+SQL Server连接方案,不需要复杂的服务器部署,完全满足你本地测试、连接当前域名下SQL Server的需求,一步步来绝对能成:
第一步:跳过捆绑环境,用独立PHP搭建基础
- 直接去PHP官网下载对应你系统位数的非线程安全(NTS)版本(比如Windows x64选PHP 8.2 NTS),解压到本地一个简单路径,比如
C:\php - 复制解压目录里的
php.ini-development文件,改名为php.ini,打开它修改3个关键配置:- 找到
extension_dir = "ext",去掉前面的分号,确保它指向PHP文件夹下的ext子目录 - 找到(或者直接添加)
extension=pdo_sqlsrv和extension=sqlsrv两行,去掉前面的分号,开启SQL Server扩展 - 找到
date.timezone,设置成你的时区,比如date.timezone = Asia/Shanghai
- 找到
第二步:安装匹配的SQL Server PHP驱动
- 去微软官网下载Microsoft Drivers for PHP for SQL Server,一定要选和你PHP版本、系统位数完全匹配的驱动包(比如PHP 8.2 x64就对应下载8.2版本的x64驱动)
- 解压驱动包后,把里面的
php_pdo_sqlsrv_xxx.dll和php_sqlsrv_xxx.dll两个文件,复制到PHP的ext文件夹里(就是刚才的C:\php\ext) - 划重点:驱动版本和PHP版本不匹配的话,扩展绝对加载失败,一定要仔细核对!
第三步:用PHP内置服务器快速启动服务(不用IIS/WAMP)
- 找个地方新建你的项目文件夹,比如
D:\php-sqlserver-test - 打开命令提示符(CMD),用
cd命令切换到这个项目文件夹:cd D:\php-sqlserver-test - 输入命令启动PHP内置服务器:
php -S localhost:8000 - 这时候打开浏览器访问
http://localhost:8000,就能看到你的项目目录了——这个内置服务器足够你本地测试用,完全不用折腾IIS的复杂配置
第四步:编写连接SQL Server的测试代码
在你的项目文件夹里新建一个connect.php文件,复制下面的代码,替换成你的实际数据库信息:
<?php // 替换成你的SQL Server连接信息 $serverName = "你的SQL Server服务器地址"; // 比如当前域名对应的服务器IP/机器名,比如 "192.168.1.100" 或者 "DESKTOP-XXXXXX" $dbConfig = [ "Database" => "你的目标数据库名", "Uid" => "数据库登录用户名", "PWD" => "数据库登录密码" ]; // 尝试建立连接 try { $conn = sqlsrv_connect($serverName, $dbConfig); if ($conn === false) { die(print_r(sqlsrv_errors(), true)); } echo "<h3>✅ 连接SQL Server成功!</h3>"; // 可选:测试一个简单查询 $testQuery = "SELECT TOP 2 * FROM 你的测试表名"; $queryResult = sqlsrv_query($conn, $testQuery); if ($queryResult === false) { die(print_r(sqlsrv_errors(), true)); } echo "<h4>测试查询结果:</h4>"; while ($row = sqlsrv_fetch_array($queryResult, SQLSRV_FETCH_ASSOC)) { echo "<p>"; print_r($row); echo "</p>"; } sqlsrv_free_stmt($queryResult); } catch (Exception $e) { echo "<h3>❌ 连接失败:</h3>" . $e->getMessage(); } // 关闭连接 sqlsrv_close($conn); ?>
替换完成后,在浏览器访问 http://localhost:8000/connect.php,就能看到连接和查询结果了。
常见坑点排查
- 如果提示“找不到sqlsrv扩展”:检查驱动文件是否放到了正确的
ext文件夹,php.ini里的扩展是否已经开启,驱动版本和PHP版本是否完全匹配 - 如果连接失败:检查SQL Server是否允许本地连接(可以在SQL Server管理器里开启TCP/IP协议),防火墙是否开放了1433端口,用户名密码是否正确,目标数据库是否存在
- 如果内置服务器启动失败:换个端口试试,比如
php -S localhost:8080,避免端口被占用
内容的提问来源于stack exchange,提问作者Carl Hussain
相关产品推荐
相关产品推荐

