web-dev-qa-db-ja.com

致命的なエラー:未定義関数sqlsrv_connect()の呼び出し

私は同じ主題の質問に関するかなりの数の記事に出くわしましたが、それを解決することはまだできないので、お願いします。私は私のPHPスクリプトでSQLに接続しようとしています。私の接続文字列は次のとおりです。

/* Specify the server and connection string attributes. */
$serverName = "xxx-PC\SQLExpress";
$connectionOptions = array("Database"=>"Salesforce");
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn === false)
{
      die(print_r(sqlsrv_errors(), true));
}

Wampフォルダーの下にあるphp.iniファイルに以下をインストールして含めました:C:\wamp\bin\php\php5.4.16

extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll

私のwampserverは正常に動作しています。wampapacheおよびwampsqldサービスも正常に動作しています。 php.exeを正常に実行できます。ただし、データベースが置かれているSQL Server 2008 R2への接続を確立できません。助けてください!

編集1:SQL Server 2008 R2に接続しようとしている間、wampサーバーはwampmysqlサービスを実行しています。これが理由でしょうか? MySQLの代わりにSQLを使用する必要がありますか?ポインタはありますか?

編集2:phpinfo()を実行したときにsqlsrvセクションがまったく表示されませんが、extension=php_sqlsrv_54_ts.dllをwampサーバーのbinフォルダーにあるphp.iniファイルに追加しました。

enter image description here

28
Sarah

これ 私の答えを得るのに役立ちました。私の場合、wamp用に2つのphp.iniファイルがあります。 1つはphpフォルダーの下にあり、もう1つはC:\wamp\bin\Apache\Apachex.x.x\binフォルダーにあります。 sqlsrv_connect関数を介してSQLに接続する場合、Apacheフォルダー内のphp.iniファイルを参照します。このファイルに以下を(バージョンごとに)追加します。

extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll
10
Sarah

サードパーティの拡張機能をインストールする場合、すべてのコンパイルパラメーターが一致することを確認する必要があります。

  • PHPバージョン
  • アーキテクチャ(32/64ビット)
  • コンパイラ(VC9、VC10、VC11 ...)
  • スレッドセーフ

一般的な不具合には次のものがあります。

  • 間違ったphp.iniファイルの編集(これはバンドルで一般的です);正しいパスはphpinfo()に示されています。
  • Apacheの再起動を忘れています。
  • 起動エラーが表示されない;これらはApacheログに表示されますが、コマンドラインを使用して診断することもできます。例:

    php -d display_startup_errors=1 -d error_reporting=-1 -d display_errors -c "C:\Path\To\php.ini" -m
    

すべてが正しい場合、コマンド出力にsqlsrvおよび/またはphpinfo()(設定しているSAPIに応じて)が表示されます。

[PHPモジュール]
bcmath
カレンダー
コア
[...]
SPL
sqlsrv
標準
[...]

phpinfo()

12

Microsoft Drivers 3.1、3.0、および2.0を使用している場合。 IISで既にインストールされているPHPバージョンを確認してください。

このスクリプトを使用して、PHPバージョンを確認します。

<?php echo phpinfo(); ?>

OR

Webプラットフォームインストーラーを使用して IISのPHPマネージャー をインストールしている場合、そこからバージョンを確認できます。

次に:
新しいPHPバージョン(5.6)を使用している場合は、ダウンロードしてください ここからドライバ

PHPバージョン5.6未満-ダウンロードしてください ここからドライバ

  • PHP Driverバージョン3.1には、PHP 5.4.32、またはPHP 5.5.16以降が必要です。
  • PHP Driverバージョン3.0には、PHP 5.3.0以降が必要です。可能であれば、PHP 5.3.6以降を使用してください。
  • PHPドライバーバージョン2.0ドライバーは、PHP 5.2.4以降で動作しますが、PHP 5.4では動作しません。可能であれば、PHP 5.2.13以降を使用してください。

次に、PHP Managerを使用して、ダウンロードしたドライバーをphp configファイルに追加します。以下に示すように実行できます(ファイルを参照して[OK]を押します)。 その後、IISサーバーを再起動します

enter image description here

この方法が機能しない場合は、phpバージョンを変更して、phpスクリプトを実行してみてください。 enter image description here php versionを低く変更し、何が起こったのかを理解しようとすると、上記の手順に関連する関連ドライバーをダウンロードできます。

3
Elshan

最初に、拡張機能がphpinfo();に正しくロードされていることを確認します(sqlsrvのようなものが表示されるはずです)。そうでない場合、拡張機能は適切にロードされません。拡張機能をインストールした後、Apacheを再起動する必要もあります。

0
Dave Child

apacheのhttpd.confでPHPIniDir D:/wamp/bin/php/php5.5.12が間違っていたので、これは同じです。

0
ashkufaraz