ホームページ > php教程 > php手册 > PHPがMSSQLデータベースに接続できない問題について

PHPがMSSQLデータベースに接続できない問題について

WBOY
リリース: 2016-06-21 09:07:19
オリジナル
716 人が閲覧しました

データ|データベース|質問

今日、新しいサーバーを構成しました。構成は IIS+php です。実行中に、php をリモート mssql データベースに接続するときにエラーが見つかりました。エラー コードは次のとおりです。
警告: mssql_connect(): サーバーに接続できません。 :

考えてみてください、以前は問題ありませんでした、何が起こっているのですか?その後、オンラインで検索して記事を見つけましたが、php を使用して mssql に接続するにはサーバーに mssql をインストールする必要があることがわかりました。当初は新しいサーバーで mssql を使用する必要はありませんでした。はい、mssql をインストールすれば問題ありません。

Linux で apache+php だとどうなるんだろう、mssql をインストールするのは無理だ、と思っていたら、ははは、めまいがしました。

以下は私が見つけた記事です。

php設定:
php.iniファイルで次のように設定し、
;extension=php_mssql.dllを見つけてその前のセミコロンを削除します
extension_dir = d:extensionを見つけます
php.iniにはd:extensionが含まれていない可能性がありますその中で
php インストール ディレクトリの下の extensions ディレクトリにある php_mssql.dll のパスに変更します (php インストール パスが d:php であると仮定します)
それを extension_dir=d に変更します。 phpextensions
次に Web サーバーを再起動します


これは簡単ですが、このような設定を完了しても、次のようなエラー メッセージが表示されます:

MS SQL Server データベース接続エラーです。データベース ホストを確認してください。変数の設定は正しいです !!

ホストの変数設定を何度も確認しましたが、その設定に問題はありませんでした。次の手がかりを見つけました:


情報:

PHP から SQL Server 2000 に接続しようとしています
次の警告が表示されました:
警告: mssql_connect(): サーバーに接続できません: SERVERPortal
....5 行目に

5 行目に:
$ db_connect = mssql_connect('SERVERPortal', 'sa', 'my_passwd');

次のことを行いました
1.PHP.ini で php_mssql.dll 拡張機能を有効にしました
2.すべての dll が適切な場所にあります (System32 またはPHP フォルダー)、ntwdblib.dll を含む

Web で多くのプロファイルを検索しましたが、解決するための適切な答えが得られませんでした

数時間後、問題の原因は
ntwdblib.dll のバージョンであることがわかりました。古い ntwdblib.dll をバージョン 8.00.194 の新しい

ntwdblib.dll に置き換えると、Windows 2003 での MSSQL に関するいくつかの問題が解決されました。

同じウィンドウ、php、php-ini が 2 つありましたが、接続できたのは 1 つだけでした。


最後に ntwdblib.dll と PHP で配布されたバージョンを確認しました。は 7.00 でした ...

、SQL Server インストールのバージョンは 8.00 でした ...

これを php ディレクトリと apache ディレクトリにコピーしたところ、問題はこの中に見つかりました。ちなみに、問題は ntwdblib.dll です

ntwdblib.dll の主な機能は、SQL サーバー接続サービスを提供することです。

私が使用している PHP のバージョンは 4.3.9 です。インストールされているサーバーの Windows/system32/ では、ntwdblib.dll ファイルのバージョンが 2000.2.8.0 であることがわかりました。これは、このバージョンが SQL Server 7.0 をサポートしているためです。 PHP がインストールされていると、dll 配下のすべてのファイルがシステム

ディレクトリに上書きされるため、これを使用して SQL Server 2000 に接続すると、当然接続できなくなります。

その後、SQL Server 2000 が正常にインストールされているサーバー上の ntwdblib.dll のバージョンが 2000.80.2039.0 であることがわかり、このファイルをコピーして、サーバーを再起動した後、すべてが正常になりました。

追加: データベース名が数字で始まる場合は、データベース名を角括弧 [ ] で囲むだけで開くことができます

。たとえば、123bbs は [ 123bbs] に書き換えられます。また、この状況はデータベース名が SQL Server の予約語と競合する場合にも発生します。角括弧を使用することによっても解決できます。
ついに、PHP が SQL Server 2000 に正しく接続できない問題が解決されました。半日以上かかりましたが、それでも大きな収穫がありました。今投稿することで、同じ問題に遭遇した兄弟たちを救うことができます。いくつかの回り道。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート