web-dev-qa-db-ja.com

PHP sqlsrv拡張機能をロードしていません

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サービスを再起動し、サーバーを再起動しました。

私はここに誰かが他に試してみることができることを望んでいます。

2
chump

最初の問題はまだ解決していませんが、ログファイル名を変更しない限り、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拡張がロードされました。これが他の誰かの役に立つことを願っています。

1
chump