ホームページ  >  に質問  >  本文

XAMPP/SQLSRV: PHPINFO() で Sqlsrv が見つかりません; - 接続エラー

Linux VM 上でホストされている SQL Server データベースに接続しようとしています。開発用 Windows マシンで xampp を実行しており、構築中の 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= からダウンロードしました#

必要な dll ファイルを

xamppphpetc ディレクトリに移動しました。また、php.ini ファイル内の拡張ディレクトリが extension_dir="C:xamppphpext" であることも確認しました。

php.ini の

Dynamic Extensions セクションに次の内容が追加されました: リーリー

php_ プレフィックスを削除すること、.dll サフィックスを削除すること、ts を使用するかどうかにかかわらず、すべてのファイルを拡張ディレクトリに移動すること (上記にリストされているもののみ) に関する情報をオンラインで見つけました。 php8ts を除くいくつかのファイルがディレクトリ情報に移動されました。 dll など上記のすべての構成を、論理的および非論理的の両方で試しました。

これは私の Web サイトのサンプル接続コードです:

リーリー

複数の異なる接続例を試してみました。上記を実行すると、次のエラーが発生します:

致命的エラー: キャッチされない PDOException: C:xampphtdocssiteindex.php:123 でドライバーが見つかりません スタック トレース: #0 C:xampphtdocssiteindex.php(123): PDO ->__construct('sqlsrv:Server= my_server_ip', 'username ', 'password') #1 {main} は 123

行目で C:xampphtdocssiteindex.php をスローします

ここからは論理的にOKだと思いました。

phpinfo(); をエコーし​​て確認しましょう。リストのどこにも sqlsrv または PDO バリアントは何もリストされていません。 sqlsrvページでctrl fを押しても上記のエラーしか見つかりません。

ODBC ドライバーがインストールされていることを確認しました。

私が試したその他のことは、PDO の代わりに

sqlsrv_connect を使用することです。私の PHP バージョン (8.1) に関して矛盾する情報を見つけましたが、とにかく試してみることにしました。ただし、その亜種に遭遇すると、次のような結果が得られます:

致命的エラー: 未定義の関数 sqlsrv_connect() を呼び出しています

私にとって、.dll が認識されていないか、そのようなものであることは明らかです。しかし、私は一生その理由を理解できません。すべてが管理者として実行されていることを確認し、xamppを複数回再起動し、DLLを削除/再ダウンロードしたことなどを確認しました。

私が思いつかなかった明らかな問題を誰かが指摘できますか?

P粉201448898P粉201448898318日前617

全員に返信(1)返信します

  • P粉798010441

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

    解決しました。質問は 2 つあります。

    1. Xampp インストールが破損しています。ページ上で echo phpinfo(); を使用したときに気づいた新しい DLL はどれも認識されません。

    2. ini に拡張子が x64 として書き込まれているにもかかわらず、何らかの理由で、ini ファイル構成では x64 ではなく x86 DLL を使用しようとします。

    解決手順:

    1. デフォルト設定を使用して Xampp を再インストールし、再構成したところ、DLL が認識されるようになりました。

    2. Xampp の拡張機能ディレクトリから x86 dll を削除しました。

    最終的な php.ini は次のようになります:

    リーリー

    最終的な .dll の使用は冗長になる可能性がありますが、期待どおりに動作します。 php のバージョンと互換性の問題がある可能性があるため、sqlsrv または pdo_sqlsrv の正しいバージョンを必ず確認してください。

    返事
    0
  • キャンセル返事