【发布时间】:2017-03-24 16:49:09
【问题描述】:
我正在尝试将 sqlsvr 连接到 Apache 服务器上的 php。以下是详细信息:
PHP 版本 7.1.3
PHP 扩展构建: API20160303,TS,VC14
我从这里下载了与 php 7.1 版兼容的 sqlsvr 驱动程序:github.com/Microsoft/msphpsql/releases
我将 php_pdo_sqlsrv_71_ts.dll 和 php_sqlsrv_71_ts.dll 复制到 C:\PHP\ext 目录中。
然后我试图定位 php.ini * 文件,但只能找到 php.ini-production 和 php.ini-development 在 C:\PHP 目录中。 我在另一个线程上读到,在 php 7+ 中,他们删除了 php.ini 并说要使用 php.ini-production 。
我做了什么,并将 2 个扩展添加到 php.ini-production:
extension=php_sqlsrv_71_ts.dll
extension=php_pdo_sqlsrv_71_ts.dll.
注意 *: 加载的配置文件在我的本地主机站点上是(无)。
然后我重新启动了Apache服务器,但它似乎没有连接到sqlsvr(我使用phpinfo()检查)。
我仍然可以正常连接到站点,尝试实现 sqlsvr 后没有任何变化
我也尝试使用微软官方页面的驱动程序,但没有成功
任何帮助将不胜感激
编辑:
所以我通过执行以下操作来修复它: 我复制了 php.ini-development 中的所有内容并创建了一个名为 php.ini 的新文件(以前不存在)。我通过取消注释这些行来修改它:
extension=c:/php/ext/php_curl.dll
extension=c:/php/ext/php_gd2.dll
extension=c:/php/ext/php_intl.dll
extension=c:/php/ext/php_mbstring.dll
extension=c:/php/ext/php_mysqli.dll
extension=c:/php/ext/php_openssl.dll
extension=c:/php/ext/php_soap.dll
extension=c:/php/ext/php_xmlrpc.dll
然后我添加了这两行:
extension=php_pdo_sqlsrv_71_ts.dll
extension=php_sqlsrv_71_ts.dll
现在我重新启动了 Apache 服务器,当我搜索“sqlsrv”时,它就在那里。我还注意到 Loaded Configuration File 现在说 C:\PHP\php.ini 而不是 (none)。
然后我用谷歌搜索了一种方法来测试是否建立了连接并找到了这段代码,我将其放入 C:\Apache24\htdocs\ 目录并命名为 connect.php;
<?php
$serverName = "serverName\sqlexpress"; //serverName\instanceName
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
?>
我重新启动 apache 服务器并转到 localhost/connect.php 并获取此消息:
“无法建立连接。 Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -49 [code] => -49 [2] => 此扩展需要 Microsoft ODBC Driver 11 或 13对于 SQL Server。访问以下 URL 以下载适用于 x64 的 SQL Server 的 ODBC 驱动程序 11 或 13:http://go.microsoft.com/fwlink/?LinkId=163712 [message] => 此扩展需要用于 SQL Server 的 Microsoft ODBC 驱动程序 11 或 13。访问以下 URL 以下载用于 x64 的 SQL Server 的 ODBC 驱动程序 11 或 13:http://go.microsoft.com/fwlink/?LinkId=163712) [1] => 数组 ([0] => IM002 [SQLSTATE] => IM002 [1] => 0 [code] => 0 [2] => [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序 [消息] => [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序 ))"
我去链接,但驱动程序只支持最高 php 7.0(我有 7.1.3)但我还是尝试了一下,ofc 不起作用。
【问题讨论】:
-
您是否收到错误消息?仅仅说你没有成功并不能帮助我们理解问题。
-
@SeanLange 无错误信息,网站运行正常,尝试执行sqlsvr后没有任何变化
-
您能与我们分享您的 DSN 吗?
-
什么都没有改变是什么意思?我看不到您的屏幕,也不知道这里有什么问题。给我们一些细节,以便我们知道问题所在。
-
@SeanLange 因此,在我完成上述所有操作后,我转到我的站点(本地主机)并在 phpinfo 页面上搜索“sqlsvr”。我没有找到任何“sqlsvr”,这意味着它没有连接到 sqlsvr。问题是,我已按照说明安装 sqlvr for php,但它不起作用
标签: php sql-server apache