Linux VM 上でホストされている SQL Server データベースに接続しようとしています。開発用 Windows マシンで xampp を?qū)g行しており、構(gòu)築中の PHP サイトから接続しています。接続には sqlsrv
を使用する必要があると思います。 DLL sql-server-ver15&viewFallbackFrom=sql-server-2019## を https://learn.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view= からダウンロードしました#
xamppphpetc ディレクトリに移動(dòng)しました。また、php.ini ファイル內(nèi)の拡張ディレクトリが
extension_dir="C:xamppphpext" であることも確認(rèn)しました。
Dynamic Extensions セクションに次の內(nèi)容が追加されました:
リーリー
php_ プレフィックスを削除すること、
.dll サフィックスを削除すること、ts を使用するかどうかにかかわらず、すべてのファイルを拡張ディレクトリに移動(dòng)すること (上記にリストされているもののみ) に関する情報(bào)をオンラインで見つけました。
php8ts を除くいくつかのファイルがディレクトリ情報(bào)に移動(dòng)されました。 dll など上記のすべての構(gòu)成を、論理的および非論理的の両方で試しました。
リーリー
複數(shù)の異なる接続例を試してみました。上記を?qū)g行すると、次のエラーが発生します:
致命的エラー: キャッチされない PDOException: C:xampphtdocssiteindex.php:123 でドライバーが見つかりません スタック トレース: #0 C:xampphtdocssiteindex.php(123): PDO ->__construct('sqlsrv:Server= my_server_ip', 'username ', 'password') #1 {main} は 123ここからは論理的にOKだと思いました。行目で C:xampphtdocssiteindex.php をスローします
phpinfo(); をエコーし??て確認(rèn)しましょう。リストのどこにも
sqlsrv または PDO バリアントは何もリストされていません。 sqlsrvページでctrl fを押しても上記のエラーしか見つかりません。
私が試したその他のことは、PDO の代わりに
sqlsrv_connect を使用することです。私の PHP バージョン (8.1) に関して矛盾する情報(bào)を見つけましたが、とにかく試してみることにしました。ただし、その亜種に遭遇すると、次のような結(jié)果が得られます:
致命的エラー: 未定義の関數(shù) sqlsrv_connect() を呼び出しています私にとって、.dll が認(rèn)識(shí)されていないか、そのようなものであることは明らかです。しかし、私は一生その理由を理解できません。すべてが管理者として実行されていることを確認(rèn)し、xamppを複數(shù)回再起動(dòng)し、DLLを削除/再ダウンロードしたことなどを確認(rèn)しました。
私が思いつかなかった明らかな問題を誰かが指摘できますか?
解決しました。質(zhì)問は 2 つあります。
Xampp インストールが破損しています。ページ上で echo phpinfo();
を使用したときに気づいた新しい DLL はどれも認(rèn)識(shí)されません。
ini に拡張子が x64 として書き込まれているにもかかわらず、何らかの理由で、ini ファイル構(gòu)成では x64 ではなく x86 DLL を使用しようとします。
解決手順:
デフォルト設(shè)定を使用して Xampp を再インストールし、再構(gòu)成したところ、DLL が認(rèn)識(shí)されるようになりました。
Xampp の拡張機(jī)能ディレクトリから x86 dll を削除しました。
最終的な php.ini は次のようになります:
リーリー最終的な .dll の使用は冗長(zhǎng)になる可能性がありますが、期待どおりに動(dòng)作します。 php のバージョンと互換性の問題がある可能性があるため、sqlsrv または pdo_sqlsrv の正しいバージョンを必ず確認(rèn)してください。