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를 다운로드했습니다.
xamppphpetc
目录。我还验证了 php.ini 文件中的扩展目录是 extension_dir="C:xamppphpext"
로 옮겼습니다.
섹션에 추가되었습니다: 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
내가 시도한 또 다른 방법은 PDO 대신
을 사용하는 것입니다. 내 PHP 버전(8.1)과 관련하여 상충되는 정보를 발견했지만 어쨌든 시도해 보고 싶다고 생각했습니다. 하지만 이 변종을 만나면 다음과 같은 결과가 나옵니다. sqlsrv_connect
치명적인 오류: 정의되지 않은 함수 sqlsrv_connect() 호출나에게는 내 .dll이 인식되지 않거나 그와 유사한 것이 분명했습니다. 그러나 나는 평생 동안 그 이유를 이해할 수 없습니다. 모든 것이 관리자로 실행되고 있는지 확인하고 xampp를 여러 번 다시 시작하고 dll을 삭제/다시 다운로드하는 등의 작업을 수행했습니다.
내가 생각하지 못했던 명백한 문제를 지적할 수 있는 사람이 있나요?
P粉7980104412023-11-10 19:58:28
해결되었습니다. 두 가지 질문이 있습니다.
내 Xampp 설치가 중단되었습니다. 페이지에서 echo phpinfo();
를 사용할 때 발견한 새로운 DLL을 인식하지 못합니다.
어떤 이유로 ini 파일 구성에서는 확장자가 ini에 x64로 기록되어 있는데도 x64 대신 x86 dll을 사용하려고 합니다.
해결 단계:
기본 설정으로 Xampp을 다시 설치하고 재구성했는데 이제 dll이 인식됩니다.
Xampp의 확장 디렉터리에서 x86 dll을 제거했습니다.
최종 php.ini는 다음과 같습니다.
으아아아최종 .dll을 사용하는 것은 중복될 수 있지만 여전히 예상대로 작동합니다. PHP 버전과의 호환성 문제가 발생할 수 있으므로 sqlsrv 또는 pdo_sqlsrv의 올바른 버전을 확인하십시오.