3

これはプロジェクトなので、極端なレベルの注意やセキュリティは必要ありません。動作させてから改善したいと考えています。

PHP を SQL Server 2012 に正常に接続するにはどうすればよいですか

私が成功したこと:

  • SQL Server 2012 で混合認証を有効にしました
  • SQL 認証を使用してアカウントを確立しました
  • IIS で FastCGI をセットアップし、PHP.ini を構成する
  • Web ルートの .PHP スクリプトは正常に実行されます
  • SSMS を使用して、作成した資格情報 (SQL 認証) を使用してローカルで SQL データベースに接続できます。

問題:

  • PHP スクリプトを使用してローカル SQL データベースに正常に接続できません。

私が考慮したこと、しかし診断するのに十分に理解していないこと:

  • IIS への HTTP 接続は、Web ルートで PHP スクリプトを読み取り/実行する権限を持っているが、サーバーに接続する権限を持っていない可能性がある IUSR を偽装していますか?
  • 何らかの理由で、私の接続ダイアログが単に効果がないこと

ここに私の接続スクリプトがあります:

$serverName = 'localhost';
$connectionInfo = array( 'Database'=>'DATABASE',
                       'Encrypt'=>'1', 'UID'=>'user', 'PWD'=>'password' );

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

if( $connection == false )
{
  echo "No connection was established.\n";
  die( print_r( sqlsrv_errors(), true));
}

これが私のエラーです(残念ながら、PHPはそれらをきれいに印刷しません):

No connection was established. Array (
    [0] => Array (
        [SQLSTATE] => 08001
        [code] => -2146893019
        [message] => [Microsoft][SQL Server Native Client 11.0]SSL Provider: The certificate chain was issued by an authority that is not trusted.
    )
    [1] => Array (
        [SQLSTATE] => 08001
        [code] => -2146893019
        [message] => [Microsoft][SQL Server Native Client 11.0]Client unable to establish connection
    )
) 

また、プロセス モニターを使用して、ブラウザーからスクリプトを読み込むときに w3wp.exe をチェックしようとしました。そこから情報を貼り付ける方法はわかりませんが、出力に問題はないようです。

4

1 に答える 1

2

エラー メッセージは単純明快です。SQL Server で使用している SSL 証明書は自己署名されているため、消費者によって信頼されていません。

可能な解決策は次のとおりです。

  • SQL Server で SSL/TLS を無効にする
  • SQL Server へのセキュリティで保護されていない接続を使用する
  • 自己署名証明書を消費者の信頼できる証明書ストアに追加します
  • パブリック CA から信頼できる証明書を取得します (Namecheap は 20 ドル未満でそれらを行います)
于 2013-04-05T11:12:30.983 に答える