2017-03-31 5 views
1

PHPからMSSQLデータベースにフォームからデータを送信できるページをまとめようとしています。私はPHPを正常にインストールしましたが(phpinfo()はリモートコンピュータ上で正常に動作します)、sqlsrv extensionはロードされません。 php.iniファイルを編集しているのは知っています。もう1つの拡張子(wincache)が追加されており、正常にロードされており、phpinfo()get_loaded_extensions()の両方で確認されています。IIS上のPHPがsqlsrvの拡張子を読み込まない

ログに何も表示されません。 IIS上のPHPマネージャは、sqlsrv拡張ファイルが有効であることを伝えています。私はウェブサイト、サーバ、コンピュータを再起動しましたが、何も動いていません。

Windows 7 UltimateマシンでPHP 7.1.1を使用しています。 x64モード、スレッドセーフではありません。私が有効にした拡張ファイルがスレッドセーフではないx64であることを確認しました。私は他に何をチェックするか、私が提供する必要がある情報が何であるか分かりません。

EDIT:this pageが示唆したように、私はphp-cgi.exeを走り、それがエラーmesagesで出てきた:これは、問題が拡張DLLに自分自身であることを

[31-Mar-2017 22:38:12 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files\iis express\PHP\v7.1\ext\php_sqlsrv_7_nts_x64.dll' - The specified procedure could not be found. 
in Unknown on line 0 
[31-Mar-2017 22:38:17 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files\iis express\PHP\v7.1\ext\php_pdo_sqlsrv_7_nts_x64.dll' - The specified procedure could not be found. 
in Unknown on line 0 

を意味するのでしょうか?私はそれをどうやって修正するのだろうか?

EDIT 2: ImClarkyは、私がエクステンションの古いバージョンを使用していたことを明らかにしています。私はそれが働くんだが、今の私の認証は、私は理解していない理由のために失敗している:

function connect_sql() { 
    /* Specify server and connection attributes */ 
    $serverName = "(local)"; 

    /* Get UID and PWD from app-specific files */ 
    $uid = file_get_contents("C:\AppData\uid.txt"); 
    $pwd = file_get_contents("C:\AppData\pwd.txt"); 
    $connectionInfo = array("UID" => $uid, 
          "PWD" => $pwd, 
          "Database" => "database_name"); 

    /* Connect using SQL Server Auth */ 
    $conn = sqlsrv_connect($serverName, $connectionInfo); 
    if ($conn === false) 
    { 
     echo "Unable to connect.</br>"; 
     //die(print_r(sqlsrv_errors(), true)); 
     die(print_errors()); 
    } 
    else { 
     echo "Connection Successful"; 
    } 

    /* Free connection resources */ 
    sqlsrv_close($conn); 
} 

私は二重の私が正しいユーザ名とパスワードを使用していますし、私も中に行って、作成されたことを確認しました私が試している正確なUIDとパスワードを使用した全く新しいログイン。私はまだ、次のエラーメッセージを毎回取得:実行中のPHP

Unable to connect. 

SQLSTATE: 28000 
code: 18456 
message: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed for user 'username'. 

SQLSTATE: 28000 
code: 18456 
message: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed for user 'username'. 
+1

実行中のsqlsrvのバージョンは何ですか? codeplexからのものは* old * ... [GitHub](https://github.com/Microsoft/msphpsql)は、最新バージョンの場所になりました。 – ImClarky

+1

前のコメントに加えて、新しいバージョンが必要な場合は、バージョン4.1.3以上をダウンロードしてください。以前のバージョンはPHP 7.1をサポートしていません。 – ImClarky

+0

@ImClarkyそれはやっているようでしたが、今は認証エラーが出ています。私はそのようなエラーに悩まされているような気分だが、接続スクリプトに正しいユーザー名とパスワードがあることを確認した。私は[MSDNページ](https://msdn.microsoft.com/en-us/library/cc296182(v = sql.105).aspx)の例を使用しています。スクリプトとエラーメッセージで質問を編集します。 – Abion47

答えて

0

あなたはまたSQLSRVの正しいドライバを選択しました

のphp.iniで使用される拡張フォルダの.dllファイルを追加していることを確認してくださいにマッチした

SQLSRv sqlsrv from official microsoft page

関連する問題