찾다

 >  Q&A  >  본문

XAMPP/SQLSRV: PHPINFO()에서 Sqlsrv를 찾을 수 없습니다. 연결 오류입니다.

Linux VM에 호스팅된 SQL Server 데이터베이스에 연결하려고 합니다. 저는 개발용 Windows 컴퓨터에서 xampp을 실행하고 있으며 연결은 제가 만들고 있는 PHP 사이트에서 이루어졌습니다. 연결하려면 sqlsrv를 사용해야 할 것 같아요. https://learn.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=에서 dll sql-server-ver15&viewFallbackFrom=sql-server-2019를 다운로드했습니다.

필요한 dll 파일을 내

xamppphpetc 目录。我还验证了 php.ini 文件中的扩展目录是 extension_dir="C:xamppphpext"로 옮겼습니다.

다음이 php.ini의

섹션에 추가되었습니다: Dynamic Extensions 으아아아

삭제

등에 관한 정보를 온라인에서 찾았습니다. 나는 논리적이든 비논리적이든 위의 모든 구성을 시도했습니다. php_ 前缀、删除 .dll 后缀、使用 ts 或非 ts、将所有文件移动到扩展目录、仅将上面列出的几个文件移动到目录中的信息,不包括 php8ts。 dll

내 웹사이트의 샘플 연결 코드는 다음과 같습니다.

으아아아

다양한 연결 예시를 시도해 보았습니다. 위의 작업을 수행하면 다음 오류가 발생합니다.

치명적인 오류: 포착되지 않은 PDO예외: C:xampphtdocssiteindex.php:123에서 드라이버를 찾을 수 없습니다. 스택 추적: #0 C:xampphtdocssiteindex.php(123): PDO ->__construct('sqlsrv:Server=my_server_ip' , 'username', 'password') #1 {main}은 123행의 C:xampphtdocssiteindex.php에서

를 던졌습니다.

여기서 논리적으로 괜찮다고 생각했습니다. phpinfo();를 에코하여 확인해 보겠습니다.

또는 PDO 변형에 대한 내용은 목록 어디에도 나열되어 있지 않습니다. sqlsrv 페이지에서 ctrl+f를 눌러도 위와 같은 오류만 찾아볼 수 있습니다. phpinfo(); 。列表中的任何位置都没有列出 sqlsrv

ODBC 드라이버가 설치되었는지 확인했습니다.

내가 시도한 또 다른 방법은 PDO 대신

을 사용하는 것입니다. 내 PHP 버전(8.1)과 관련하여 상충되는 정보를 발견했지만 어쨌든 시도해 보고 싶다고 생각했습니다. 하지만 이 변종을 만나면 다음과 같은 결과가 나옵니다. sqlsrv_connect

치명적인 오류: 정의되지 않은 함수 sqlsrv_connect() 호출

나에게는 내 .dll이 인식되지 않거나 그와 유사한 것이 분명했습니다. 그러나 나는 평생 동안 그 이유를 이해할 수 없습니다. 모든 것이 관리자로 실행되고 있는지 확인하고 xampp를 여러 번 다시 시작하고 dll을 삭제/다시 다운로드하는 등의 작업을 수행했습니다.

내가 생각하지 못했던 명백한 문제를 지적할 수 있는 사람이 있나요?

P粉201448898P粉201448898400일 전718

모든 응답(1)나는 대답할 것이다

  • P粉798010441

    P粉7980104412023-11-10 19:58:28

    해결되었습니다. 두 가지 질문이 있습니다.

    1. 내 Xampp 설치가 중단되었습니다. 페이지에서 echo phpinfo();를 사용할 때 발견한 새로운 DLL을 인식하지 못합니다.

    2. 어떤 이유로 ini 파일 구성에서는 확장자가 ini에 x64로 기록되어 있는데도 x64 대신 x86 dll을 사용하려고 합니다.

    해결 단계:

    1. 기본 설정으로 Xampp을 다시 설치하고 재구성했는데 이제 dll이 인식됩니다.

    2. Xampp의 확장 디렉터리에서 x86 dll을 제거했습니다.

    최종 php.ini는 다음과 같습니다.

    으아아아

    최종 .dll을 사용하는 것은 중복될 수 있지만 여전히 예상대로 작동합니다. PHP 버전과의 호환성 문제가 발생할 수 있으므로 sqlsrv 또는 pdo_sqlsrv의 올바른 버전을 확인하십시오.

    회신하다
    0
  • 취소회신하다