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
に存在します)。
ポインタはありがたいことに受け取られます。私はこれに数日を費やしましたが、どこにも行かないと思います。
ありがとう
私は同じ問題に直面しました。後で、古いバージョンの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
決定する必要があるのは
次に、要件ページを確認する必要があります 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
_に今すぐ接続できます。
私はそれを解決しました〜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を再度起動して、すべてが機能するようにします!
私は最終的に解決策を見つけました。あなたがしなければならないのは、php.ini
ファイル。
php_sqlsrv_72_ts_x86.dll
php_pdo_sqlsrv_72_ts_x86.dll
xAMPPを再起動します。
追伸「PHP 7.2.5」を使用しています
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」拡張機能が表示されます。