web-dev-qa-db-ja.com

sqlsrvを使用してPHP 7.2をMS SQLに接続する

MS SQLへの接続を取得しようとしています。PHP私のマシンで。IISを実行しています。PHP 7.2がインストールされ、MS SQL Express2017。基本的なWebページを実行していますが、クリックしてPHPページを開くと、接続が機能しません。

_session_start();

echo "Hello ";
if (isset($_POST['submit'])) {
    $_SESSION["server"] = $_POST['server'];
    $_SESSION["database"]= $_POST['database'];
    $_SESSION["username"] = $_POST['username'];
    $_SESSION["password"] = $_POST['password'];

    echo $_SESSION["database"];

    //CONNECTION
    $serverName = $_SESSION["server"];
    $connectionInfo["Database"] = $_SESSION["database"];
    $connectionInfo["UID"] = $_SESSION["username"];
    $connectionInfo["PWD"] = $_SESSION["password"];

    echo "midway";

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

    echo "Bye";
}
_

これを実行すると、「Hello Dimensions Midway」が表示されます。これは、接続ラインに到達するまでページが機能していることを示しています。
使用するsqlsrv拡張機能がわかりません。
7と7.1のバージョンを確認しましたが、7.2のバージョンは表示できません。

Php.iniの最後に_extension=php_sqlsrv_71_nts_x86.dll_を追加しました(ファイルはC:\Program Files (x86)\PHP\v7.2\extに存在します)。

ポインタはありがたいことに受け取られます。私はこれに数日を費やしましたが、どこにも行かないと思います。
ありがとう

7
Daves

私は同じ問題に直面しました。後で、古いバージョンのMicrosoft SQLファイルをPHPで使用していることがわかりました。

PHP 7.2の場合、MSの7.2バージョンを使用する必要がありますPHP SQL

そのバージョンは、MicrosoftのWebサイトからは入手できません。ここで見つけました https://github.com/Microsoft/msphpsql/releases

これらのファイルを使用すると、すべて正常に動作します。 64ビットファイルを使用しました。

次に、これらの行をphp.iniファイルに追加する必要があります

extension=php_sqlsrv_72_nts.dll
extension=php_pdo_sqlsrv_72_nts.dll 
17
Crennotech

決定する必要があるのは

  • PHPのバージョン
  • 使用しているランタイムはThread SafeまたはNon-Thread Safeです
  • 使用しているランタイムは64ビットまたは2ビットです

次に、要件ページを確認する必要があります here

使用しているPHPのバージョンを確認してください。したがって、質問を優先します。_PHP 7.2_を意味します。これはSQL Server拡張バージョン5.が最適です。

次に ダウンロードページ に移動し、希望するバージョンに固有のリンクを選択します。 (この質問では5.です)

ダウンロードしたファイルは、自己解凍型の[〜#〜] exe [〜#〜]ファイルになり、必要な場所に解凍されます。

次のようなdllファイルのリストが表示されます...

_php_pdo_sqlsrv_7_nts_x64.dll
php_pdo_sqlsrv_7_nts_x86.dll
php_pdo_sqlsrv_7_ts_x64.dll
php_pdo_sqlsrv_7_ts_x86.dll
...
php_sqlsrv_72_ts_x86.dll
_

これらのファイルの名前の意味は何ですか?

前に言ったように、適切な拡張ファイルを選択するために決定する必要があるもの。 SQL Server拡張機能には、_php_pdo_sqlsrv_xxx_および_php_sqlsrv_xxx_で始まる名前の2つのファイルが必要です。

次の番号はPHPバージョン、この場合は_PHP 7.2_を意味するため、ファイル名に__72__が含まれるファイル名を選択する必要があります。

次の数字はランタイムを意味しますThread SafeまたはNon-Thread Safe、これはファイル名__ts__(スレッドセーフ)または__nts__(非スレッドセーフ)。

次の番号は、ランタイムを意味します2ビットまたは64ビット、これはファイル名__x86_(32ビット)または__x64_(64ビット)

したがって、PHP phpinfo()による環境を確認するか、コンソールでコマンド_php --version_を実行すると、表示されるメッセージに注意してください。 ...

_PHP 7.2.12 (cli) (built: Nov  8 2018 06:12:12) ( ZTS MSVC15 (Visual C++ 2017) x86 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
_

それらの情報から見ると、PHP _7.2_、ZTSスレッドセーフ非スレッドセーフNTS)になり、_x86_は2ビットになります。

したがって、選択する必要があるのは、_php_sqlsrv_72_ts_x86.dll_および_php_pdo_sqlsrv_72_ts_x86.dll_の拡張子です

最終:それらを_/php/ext_フォルダーにコピーし、これらの2つのファイル名で_php.ini_を編集します。

_// example with my case
extension=php_pdo_sqlsrv_72_ts_x86
extension=php_sqlsrv_72_ts_x86
_

次に、_php.ini_ファイルを保存してから、サーバーを再起動します。

ページに_phpinfo.php_が含まれている必要がある_pdo_sqlsrv_を見て、結果をテストします。つまり、環境でPHPを実行し、_SQL Server_に今すぐ接続できます。

9
Natta Wang

私はそれを解決しました〜PHPバージョン7.2.4

pdo_sqlsrv:5.3.0 + 11108

1.適切なバージョンのsqlsrvおよびsqlsrv pdoをダウンロードします

2.XAMPP\PHP\extフォルダーに入れます

3.その後、php.iniに行を書き込み>モジュール設定

extension = php_pdo_sqlsrv_72_ts.dll

extension = php_sqlsrv_72_ts.dll

4.MSSQLのテストを行いましょう。エラーメッセージがまだありますので、ダウンロードすることをお勧めしますODBC Driver for SQL

5. https://docs.Microsoft.com/zh-tw/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017 に移動しますその後、適切なファイルをダウンロードします

(私のものはSQLServer®X86用のコマンドラインユーティリティ11です)

6. test.phpを再度起動して、すべてが機能するようにします!

3
Let's Yo

私は最終的に解決策を見つけました。あなたがしなければならないのは、php.iniファイル。

php_sqlsrv_72_ts_x86.dll

php_pdo_sqlsrv_72_ts_x86.dll

xAMPPを再起動します。

追伸「PHP 7.2.5」を使用しています

1
Ravi Sigdel

SQL Serverの使用方法DLL xampp上のPHP 7.2バージョンのファイル

https://github.com/Microsoft/msphpsql/releases

PECLリポジトリからPHP 7.1以上のWindows DLLをダウンロードするには、SQLSRVまたはPDO_SQLSRV PECLページにアクセスしてください。

https://pecl.php.net/package/sqlsrv/5.6.1/windows

https://pecl.php.net/package/pdo_sqlsrv/5.6.1/windows

注:拡張子dllファイル名をphp.iniファイルに追加する場合、「php_」プレフィックスを削除することを忘れないでください。例えば。

extension = pdo_sqlsrv extension = sqlsrv/xampp/php/ext /ディレクトリに置いた実際のファイル名を変更しないでください。

「7.2スレッドセーフ(TS)x86」は、 'sqlsrv'および 'pdo_sqlsrv'拡張機能で機能しました。

XamppまたはApacheを再起動すると、テストphpファイルでphpinfo()を印刷すると、有効な「pdo_sqlsrv」拡張機能が表示されます。

enter image description here

0
Kamlesh