PHPでSQL Serverに接続しようとしています。私のローカルマシンでXAMPPを使用すると、すべてがうまく機能します。しかし、今度はアプリケーションを本番サーバーに配置します。
このサーバーにはMicrosoft IIS 6.1
がインストールされ、PHP version 7.0.7
が実行されています。また、ODBCからドライバをインストールしました- here 。次に、php.iniファイルの次の行をコメント解除します。
extension=php_sqlsrv_7_nts.dll
extension=php_pdo_sqlsrv_7_nts.dll
ファイルは Microsoftの公式サイト から入手しました。
私の問題は何ですか?
残念ながら、IISを再起動した後。 PDO関数は、次のメッセージでPDOExceptionエラーをスローします。
could not find driver
接続には、ローカルマシンで非常にうまく機能する次の関数を使用しています。
try {
$con = new PDO("sqlsrv:Server=" . SERVER . ";Database=" . DATABASE, USERNAME, PASSWORD);
// set the PDO error mode to exception
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "No connection: " . $e->getMessage();
exit;
}
他に何ができますか?
Windowsサーバーでエラーログを見つけた後、自分でエラーを解決しました。
私のログでこのエラーが発生しました:
[21-Apr-2017 07:12:14 UTC] PHP Warning: PHP Startup: Unable to load dynamic library '...\ext\php_pdo_sqlsrv_7_nts.dll' - %1 is not a valid Win32 application. in Unknown on line 0
次に、もう一度 driver をダウンロードして、x64-Driverをインストールしました。最後に問題なく動作します。
「ドライバーなし」エラーを解決するのに少し時間がかかりました。ここで説明したように、いくつかの手順を実行しましたが、新しいエラーの後に役立つ他の手順を見つけました。今後の参考のために:
$dbh = new PDO ("sqlsrv:Server=$server;Database=$dbname",$username,$pw);
ポートを追加する場合は、次を使用します:
$server = "192.168.1.15, 51022";
ここで、IP(ホスト名にすることができます)はサーバーで、51022はポートです。