今日、新しいサーバーを構成しました。構成は 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_mssql.dll を別の場所に移動していない場合は、php インストール ディレクトリの下の extensions ディレクトリにあるパスに変更します (php インストール パスが d:php であると仮定します)。
これを extension_dir=d:phpextensions に変更するだけです
次に、Webサーバーを再起動します
これは非常に簡単ですが、このような設定を完了しても、次のようなエラーメッセージが表示されて接続できません。
MS SQL Server データベース接続エラー! データベースのホスト変数の設定が正しいかどうかを確認してください!!!
ホストの変数設定を何度も確認しましたが、それらの設定に問題はありませんでした。Web を閲覧したところ、次の手がかりを見つけました。
php.com 情報:
PHP から SQL Server 2000 に接続しようとしています
次の警告に遭遇しました:
警告: mssql_connect(): サーバーに接続できません: SERVERPortal
......5行目
5行目には次のようになります:
$db_connect = mssql_connect('SERVERPortal', 'sa', 'my_passwd');
以下のことを行いました
1.PHP.ini で php_mssql.dll 拡張機能を有効化
2.ntwdblib.dll を含むすべての dll が適切な場所 (System32 または PHP フォルダー) にあります
ウェブでプロフィールをたくさん検索しましたが、解決するための適切な答えをくれる人は誰もいませんでした。
数時間後、問題の原因が
であることがわかりました。
ntwdblib.dll 、古い ntwdblib.dll を新しい
に置き換えたときのバージョンは 7.00.839 です
ntwdblib.dll のバージョンは 8.00.194 で、すべての問題は解決されました。
Windows 2003 では MSSQL に関する問題がいくつかありました (よく読んでください)。
同じウィンドウが 2 つあり、php、php-ini、すべてがマシンでしたが、接続できたのは 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 に正しく接続できないという問題が解決されました。ほとんど 1 日かかりましたが、今すぐ投稿することで、同じ問題に遭遇した兄弟たちが寄り道する必要がなくなります。
www.bkjia.com