2017-11-03 1 views
1
나는 우리가 "마이크로 소프트 SQL Server 관리 Studio"를 통해 액세스 할 수있는 SQL Server에 연결하려고

: 나는했습니다치명적인 오류 : catch되지 않은 오류 : 정의되지 않은 함수 sqlsrv_connect()를 호출

enter image description here

그래서 내가 보았던 여러 가지를 시도했지만 아무 것도 효과가 없었다.

$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 파일이 사용되는 여러 가지 확장을 통해 갔다, 그러나 아무도이 일하지 않은 다음 test.php 페이지에서 다음 코드를 실행했을 때 오류 Fatal error: Uncaught Error: Call to undefined function sqlsrv_connect() in C:\Apache24\htdocs\test.php:52 Stack trace: #0 {main} thrown in C:\Apache24\htdocs\test.php on line 52를 얻을. 나는 다음의 모든 시도했다 :

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 

을 현재 내가 가지고

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> 

나 ': 나는 다음을 얻을 CMD에서 아파치와 PHP를 가진 시스템에서

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 

또한 다운로드하여 C:\Apache24\php7\ext 폴더 안에 SQLSRV32.EXE을 실행했습니다.

나는이 :

  • 윈도우 서버 2012 RS는
  • 아파치 2.4.23하는 Win64
  • PHP 7.0.10하는 Win64
  • 마이크로 소프트 SQL 서버 2012 네이티브 클라이언트는
  • 의 Microsoft Visual C를 Win64를 WIN64 ++ 2012 x64 & x86 재배포 가능 파일 (두 가지)
  • Microsoft Visual C++ 2015 재배포 가능 파일 (x64 012 32,249,86) - SQL Server에 대한 14.0.23026
  • Microsoft ODBC 드라이버 (11)는

enter image description here

enter image description here

답변

1

는 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.dllXX : "ts"또는 "nts"(스레드 안전 또는 비 스레드 안전)와 같은 파일을 받게됩니다. 스레드 안전 버전이 필요하다고 생각합니다.

그렇지 않으면, PDO_SQLSRV DSN (연결 문자열)와 MS SQL Server (PDO) PDO 드라이버 (읽기 링크에서 "설치"부분!)와 PDO 일반적인 기능을 사용하여, 예를 들어, 모든 운전자에게 공통. 드라이버는 php.ini에 extension=php_pdo_sqlsrv_7_ts.dll으로 추가됩니다 (지침은 동일한 페이지에서 확인하십시오 : Loading the PHP SQL Driver).당신이 나에게 묻는다면, 나는 정말로이 옵션을 선택할 것이다.

Nota Bene : configs에서 변경 될 때마다 웹 서버 및/또는 db 서비스를 다시 시작하는 것을 잊지 마십시오!

행운을 빈다.

관련 문제