PHP 64ビットWindowsサーバー2012 R2を実行しているMicrosoftのsqlsrv
拡張機能を使用してIISおよびPHP 7.1.7。phpinfo()
を実行すると、拡張機能が読み込まれていることがわかりません。拡張機能名としてsqlsrv
を探しているはずです。 。PHPエラーログには、拡張機能の読み込みに失敗した場合のエラーもありません。
PHP 7.1と互換性があることを示すMicrosoftのドライバのバージョン4.3をダウンロードしました。dllファイルをPHP\v7.1\ext
ディレクトリにコピーしました。phpに次の行を追加しました。 iniファイル。
extension=php_sqlsrv_7_nts_x64.dll
extension=php_pdo_sqlsrv_7_nts_x64.dll
私はphp.iniファイルが意図的にdll名の1つにスペルミスを付け、phpログに対応するエラーを表示することによって読み取られていることを確認しました。
SQL Server Native Client 10および11がインストールされています。
アプリケーションプールをリサイクルし、W3SVCサービスを再起動し、サーバーを再起動しました。
私はここに誰かが他に試してみることができることを望んでいます。
最初の問題はまだ解決していませんが、ログファイル名を変更しない限り、phpエラーログに拡張機能の読み込みの問題が表示されません。ログファイル名を変更した後、次のエラーを受け取りました。
PHP警告:PHP起動:ダイナミックライブラリ 'C:\ Program Files\PHP\v7.1\ext\php_pdo_sqlsrv_7_nts_x64.dll'をロードできません-指定されたプロシージャは見つけられた。
結局のところ、PHP 7.1に固有のドライバーを使用する必要がありました。元のダウンロードで7.1ドライバーが含まれていなかった理由がわかりません。おそらく、誤ってsqlsrv 4.0をダウンロードしました。ドライバーを初めて使用し、sqlsrv 4.3ドライバーをここにダウンロードしました。
https://www.Microsoft.com/en-us/download/details.aspx?id=55642
私はphp.iniに以下を追加しました
extension = php_sqlsrv_71_nts_x64.dll
extension = php_pdo_sqlsrv_71_nts_x64.dl
sqlsrv拡張がロードされました。これが他の誰かの役に立つことを願っています。