我正在尝试连接到我们可以通过“Microsoft SQL Server Management Studio”访问的 SQL Server:
我已经尝试了很多我在 SO 上看到的不同的东西,但没有任何效果。我收到错误 fatal error :未捕获错误:调用 C:\Apache24\htdocs\test.php:52 中未定义的函数 sqlsrv_connect() 堆栈跟踪:#0 {main} 抛出在 C:\Apache24\htdocs\中在
上:test.php
页面上运行以下代码时,第 52 行的 test.php
$serverName = "SERVER.DOMAIN.COM, 1433"; //serverName\instanceName, portNumber (default is 1433)
$connectionInfo = array( "Database"=>"DB_NAME", "UID"=>"USER", "PWD"=>"PASS");
$ma_conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $ma_conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
我的 php.ini 文件已启用许多不同的扩展,但没有一个起作用。我已尝试以下所有方法:
extension = php_sqlsrv_56_ts.dll
extension=php_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_nts.dll
extension=php_sqlsrv_55_ts.dll
extension=php_pdo_sqlsrv_55_ts.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
目前我有:
extension_dir = "c:\apache24\php7\ext\"
extension=php_pdo.dll
extension=php_pgsql.dll
[PHP_SQLSRV]
extension=php_sqlsrv_54_ts.dll
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_54_ts.dll
在 CMD 中使用 Apache 和 PHP 的机器上,我得到以下信息:
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Windows\system32>php -c c:\apache24\php7\php.ini -v -display_startup_errors=1
PHP Warning: PHP Startup: Unable to load dynamic library 'c:\apache24\php7\ext\ php_pdo.dll' - %1 is not a valid Win32 application.
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'c:\apache24\php7\ext\ php_sqlsrv_54_ts.dll' - %1 is not a valid Win32 application.
in Unknown on line 0 PHP
Warning: PHP Startup: Unable to load dynamic library 'c:\apache24\php7\ext\ php_pdo_sqlsrv_54_ts.dll' - %1 is not a valid Win32 application.
in Unknown on line 0
PHP 7.0.10 (cli) (built: Aug 18 2016 09:48:53) ( ZTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
C:\Windows\system32>
我还在 C:\Apache24\php7\ext
文件夹中下载并运行了 SQLSRV32.EXE
。
我有:
- Windows Server 2012 RS win64
- Apache 2.4.23 win64
- PHP 7.0.10 win64
- Microsoft SQL Server 2012 native 客户端 win64
- Microsoft Visual C++ 2012 x64 和 x86 可再发行组件(两种不同)
- Microsoft Visual C++ 2015 可再发行组件(x64 和 x86)- 14.0.23026
- 适用于 SQL Server 的 Microsoft ODBC 驱动程序 11
最佳答案
根据 php.ini (php_sqlsrv_XX_ts.dll
) 中的尝试列表,您已激活 PHP v5.5 和 v5.6 的扩展。但是,由于您运行的是 PHP 7.0,因此需要下载并激活相应的 Microsoft Drivers for PHP for SQL Server 。看来您需要下载驱动程序版本4.0。 php.net page for SQLSRV extension 上对此进行了说明。 .
The SQLSRV extension is supported by Microsoft and available for download here: http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx.
在这里您可以找到 Loading the PHP SQL Driver 的说明。您可能会收到一个类似 php_sqlsrv_7_XX.dll
的文件,其中包含 XX
:“ts”或“nts”(线程安全或非线程安全)。我认为你需要线程安全版本。
否则,请使用 MS SQL Server (PDO) PDO 驱动程序(阅读链接中的“安装”部分!),带有 PDO_SQLSRV DSN (连接字符串)和 PDO一般功能,例如所有驾驶员共有。然后,驱动程序将作为 extension=php_pdo_sqlsrv_7_ts.dll
添加到 php.ini(查看同一页面的说明:Loading the PHP SQL Driver)。如果你问我,我真的会选择这个选项。
Nota Bene:每次配置更改后,不要忘记重新启动 Web 服务器和/或数据库服务!
祝你好运。
关于php - fatal error : Uncaught Error: Call to undefined function sqlsrv_connect(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47103452/