首页 > 解决方案 > 如何在 PHP Apache 中通过 DSN 连接 SQL Server?(当 Apache 服务开启时它不工作)

问题描述

实际上,我尝试使用 sqlsrv_connect 并使用没有 Apache 服务的 DSN(数据源名称)来连接 SQL 服务器,那么两者都可以正常工作。

问题是当我打开 apache 服务时,php 无法使用 odbc DSN(使用 sqlsrcv_connect)连接到 sql 服务器。

条件是我需要使用使用 DSN 的 sql server 运行的应用程序打开 apache。我使用水晶报告,这就是为什么真的需要这种方法。我尝试使用系统 DSN 而不是用户 dsn,它也无法正常工作。

Apache 服务已开启

我在下面写了代码来测试我的场景


// Connect to the data source 
$conn=odbc_connect('DSNNAME','DBUSER','DBPASS');
if ($conn){
     echo "Connection established DSN";
}
else {
      echo "Connection using DSN Failed:" . odbc_errormsg();
}

// Connect through server name 

$serverName = "WEBSERVER\SQLEXPRESS"; //serverName\instanceName, portNumber (default is 1433)
$connectionInfo = array( "Database"=>"DBNAME", "UID"=>"DBUSER", "PWD"=>"DBPASS");
$conn2 = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn2 ) {
     echo "Connection established using server name";
}else{
     echo "Connection could not be established by using server name";
     die( print_r( sqlsrv_errors(), true));
}

Apache 服务开启时的结果。

Apache 服务已开启

标签: phpsql-serverapacheodbcdsn

解决方案


确保 ODBC DSN 在 32 位或 64 位方面与 Crystal 运行时相匹配。


推荐阅读