データ|データベース|質問
今日、新しいサーバーを構成しました。構成は 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 であることがわかり、このファイルをコピーして、サーバーを再起動した後、すべてが正常になりました。
追加: データベース名が数字で始まる場合は、データベース名を角括弧 [ ] で囲むだけで開くことができます