web-dev-qa-db-ja.com

MSSQLとPHP 5.3.5 on IIS=

私は最近、IIS、PHP 5.3.5およびMySQLをインストールし、すべて機能させました。

次に、MS SQLの要件もあり、簡単なタスクだと思っていたことが今私を狂わせており、それを機能させる方法を理解できません。

php_info()によると、MS SQLドライバーがロードされていません。

_php_mssql.dll_をダウンロードして_php.ini_で有効にしましたが、機能しませんでした。 PHPの新しいバージョンが別のDLLを使用していることがわかりました。そのため、新しいDLLをダウンロードしてextフォルダーに入れ、_php.ini_を更新しましたが、まだうまくいきません。 。

php_info()は、ドライバーがロードされていることをまだ示していません。

IISおよびPHPをアンインストールし、以前にインストールしたことがあるApacheをインストールします。

この質問は私の最後の試みです、誰か助けてもらえますか?

16
Naner

これはお客様からの抜粋ですFAQ私は先日、専用のホスティングユーザーがMS SQLドライバーでPHPを起動して実行するのに役立つように書きました。上記のコメントですでに伝えられているいくつかの知識を複製するかもしれませんが、完全性は他の人がゼロから始めるのを助けるかもしれません:

注:明らかにPHPのバージョン番号は私がこれを書いてから少し変わっていますが、一般的な原則はまだ適用されます。


インストールの前提条件:SQL ServerのPHPのMicrosoftドライバーには、SQL Native Clientが必要です。

Microsoft SQL Server 2008 R2 Native Client X64-for 64 bit Windows
または
Microsoft SQL Server 2008 R2 Native Client X32-for 32 bit Windows

システムに一致するNative Clientドライバーをダウンロードしてインストールします。

PHP MS SQLドライバー:

SQL Server用PHP用のMicrosoftドライバーをダウンロードします。

Microsoft Drivers for PHP for SQL Server

ファイルは自己解凍型の実行可能ファイルであるため、7ZipまたはWinRARを使用して、選択したフォルダーにファイルを抽出します。ここで、PHPのインストールに一致するドライバーを選択する必要があります。

PHP 5.3.5には4つの異なるフレーバーがあります。

  • PHP 5.3.5非スレッドセーフVC9
  • PHP 5.3.5非スレッドセーフVC6
  • PHP 5.3.5スレッドセーフVC9
  • PHP 5.3.5スレッドセーフVC6

インストールしたバージョンを確認するには、_snapshot.txt_、_php.exe_などと同じフォルダーにある_php-cgi.exe_ファイルを開きます。ファイルは改行のみを使用するため、notepad.exeは使用しないでください( _\n_)は行頭(Unix形式)で始まり、メモ帳はこれらを単一の行にマングルします。

ファイルには、_Build:_:で始まる行(6行目付近、またはメモ帳を使用した1行目の中央付近)が表示されます。

ビルド:D:\ php-sdk\snap_5_3\vc9\x86\obj\Release-非スレッドセーフ、VC9ビルド
ビルド:D:\ php-sdk\snap_5_3\vc6\x86\obj\Release-スレッドセーフではない、VC6ビルド
ビルド:D:\ php-sdk\snap_5_3\vc9\x86\obj\Release_TS-スレッドセーフ、VC9ビルド
ビルド:D:\ php- sdk\snap_5_3\vc6\x86\obj\Release_TS-スレッドセーフ、VC6ビルド

これにより、実行しているPHPのバージョンがわかります。

MS SQL PHPドライバーを抽出したフォルダーから、使用されているPHPのバージョンに一致するドライバーを選択します(PDOを使用していない場合は使用しません) _php_pdo__ドライバをコピーする必要があります):

 PHP 5.3.5非スレッドセーフVC9:php_sqlsrv_53_nts_vc9.dll、php_pdo_sqlsrv_53_nts_vc9.dll 
 PHP 5.3.5非スレッドセーフVC6:php_sqlsrv_53_nts_vc6.dll、php_pdo_vcs_v_vcs_vcs.dll 5スレッドセーフVC9:php_sqlsrv_53_ts_vc9.dll、php_pdo_sqlsrv_53_ts_vc9.dll 
 PHP 5.3.5スレッドセーフVC6:php_sqlsrv_53_ts_vc6.dll、php_pdo_sqlsrv_53_ts_vc6.dll [.____

PHPインストールが_C:\PHP_にあると仮定して、これらのファイルを_C:\PHP\EXT_フォルダーにコピー(移動しない)します。

_C:\PHP\PHP.INI_を開き、ファイルの_Dynamic Extensions_の部分を見つけて追加します。

 extension = php_sqlsrv_53_nts_vc9.dll 
 extension = php_pdo_sqlsrv_53_nts_vc9.dll <-オプション

最後に、PHPがこれらの拡張機能を確実に見つけられるようにするには、_extension_dir_の_C:\PHP\PHP.INI_ディレクティブが_C:\PHP\EXT_に設定されていることを確認します。

 extension_dir = C:\ PHP\ext 

IISを再起動し、phpinfo()を呼び出します。すべてが順調であれば、次のように表示されます。

enter image description here

また、PDOドライバーもロードした場合は、次のように表示されます。

enter image description here

37
Kev

前述しました:

extension = php_sqlsrv_53_nts_vc9.dll
extension = php_pdo_sqlsrv_53_nts_vc9.dll

私が見つけたものは間違っています。

したがって、次のようになります。

extension=php_sqlsrv_53_ts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll
1
Raunak