2016-10-30 30 views
1

PHP7 sqlsrvドライバを使用してMS SQL Serverに接続しようとしています。 それは私のブラウザが実行しようとしたときのように思える:sqlsrv_connectの試行が成功または失敗しない

$conn = new PDO("sqlsrv:Server=$serverName;Database=mydb", $uname, $pass); 

または

$conn = sqlsrv_connect($serverName, $connectionInfo); 

それだけでハングアップします。エコー/ダイメッセージが受信された場合、成功または失敗はありません。代わりに、私のブラウザのホイールが回転し続け、ステータスメッセージは "localhostを待っています"です。それはまた、タイムアウトしていないようです。私は10分以上待っていて、接続は失敗/成功しません。

完全なコード(私が試した手続きとPDOメソッド):

<?php 

// 
$serverName = "myserver\myinstance"; //serverName\instanceName 
$uname = "myuser"; 
$pass = "mypass"; 
$connectionInfo = array("Database"=>"mydb", "UID"=>$uname, "PWD"=>$pass); 

/*Procedural sqlsrv method 

$conn = sqlsrv_connect($serverName, $connectionInfo); 
if($conn) { 
    echo "Connection established.<br />"; 
    die("DONE"); 
}else{ 
    echo "Connection could not be established.<br />"; 
    die(print_r(sqlsrv_errors(), true)); 
} 
*/ 

/*PDO sqlsrv method*/ 
try { 
    $conn = new PDO("sqlsrv:Server=$serverName;Database=mydb", $uname, $pass); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    die("success!"); 
} catch(PDOException $e) { 
    die($e->getMessage()); 
} 

?> 

セットアップの詳細やその他の情報:私はXAMPPを使用してい

  • のWindows 7のx64
  • PHP 7.0.9
  • 私はSQL Server認証を経て認可する必要があるのWindows NTマシン
  • にMicrosoft SQL Serverのバージョン10.50.6220.0のインスタンスに接続しようとしています - - ないWindows承認
  • 私は正常にサーバーがリモートであるが、(SSMSで検証される)
  • リモート接続を受け入れている
  • のMicrosoft SQL Server Management Studioをし、他のツール(FMEワークベンチ)
  • を使用してデータベースに接続することができますよ

私は私のphp/extにフォルダに

php_sqlsrv_7_ts_x86.dll 

php_pdo_sqlsrv_7_ts_x86.dll 

をインストールし、php.iniの更新まで、私は以前に ")(未定義の関数sqlsrv_connect" の問題を持っていました。 phpinfoを開くと、「Registered PHP Streams」と「PDO drivers」フィールドの両方にsqlsrvが表示されます。

正常に接続するにはどうすればよいですか、または接続の試行が成功しなかった/失敗した理由について詳しく知るにはどうすればよいですか?

編集: 私はXAMPP(PHP 5.6.24)に切り替えました。 CLI経由でSQL Serverに接続できましたが、PHP-CGI経由で(ブラウザ経由で/ Apache HTTPDで提供)接続できませんでした。私は、sqlsrvとPDOの拡張機能が正常に読み込まれたことをphp_info()で再度確認しました。 PHP-CGIとPHP CLIの違いを見て、問題の原因を調べてみましょう。

EDIT: Apacheの代わりにIISを使用していますが、問題なしでsqlsrv経由で接続できます。実際には解決策ではなく、問題を回避する方法です。

答えて

0

は、そのようにしてみてください:

try { 
    $db = new PDO('sqlsrv:server=serwer_name;Database=database_name', 'user', 'password'); 
} catch (PDOException $e) {    
    echo $e->getMessage(); 
} 
関連する問題