ホームページ >バックエンド開発 >PHPの問題 >php が mssql に接続できない場合の対処方法

php が mssql に接続できない場合の対処方法

藏色散人
藏色散人オリジナル
2021-12-31 10:04:142279ブラウズ

php が mssql に接続できない場合の解決策: 1. php.ini ファイルで extension=php_mssql.dll を見つけ、その前のセミコロンを削除します; 2. php_mssql.dll ファイルを「c:/」にコピーします。 windows/system32/" ディレクトリ; 3. iis を再起動します。

php が mssql に接続できない場合の対処方法

#この記事の動作環境: Windows7 システム、PHP5 バージョン、DELL G3 コンピューター

php が失敗した場合の対処方法mssqlに接続するには?

PHP が MSSQL データベースに接続できない場合の解決策:

php データベース sql サーバー拡張機能 sqlserver サーバー

今日質問を受けましたphp5 iis6 mysql5 のプラットフォーム環境で sqlserver2000 のデータにアクセスしたところ、php をリモートの mssql データベースに接続するときにエラーが発生しました。エラー コードは次のとおりです:

Warning: mssql_connect(): Unable to connect to server:

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

拡張メソッド:

1. c:/windows/php.ini ファイルで

を見つけて (extension=php_mssql.dll)、先頭のセミコロンを削除します

Find

;extension_dir = "./" 拡張ライブラリ ディレクトリを php ライブラリ ディレクトリに変更します (例: extension_dir = "c:/php/ext"

)

2. php_mssql.dll ファイルを c:/windows/system32/ ディレクトリにコピーします

3. iis を再起動します。

以下の記事が見つかりました。

php 設定:

php.ini ファイルで次のように設定し、

;extension=php_mssql.dll を見つけます。先頭のセミコロンを削除します。

検索extension_dir = d:/extension/

あなたの php.ini は d:/extension/ ではない可能性があります。

これを php インストール ディレクトリの extensions ディレクトリにある php_mssql.dll に変更します。ここで、Path、他の場所に移動していない場合 (php のインストール パスが d:/php であると仮定します)

それを extension_dir=d:/php/extensions/ に変更します

次に、Web サーバーを再起動します

これは簡単ですが、設定を完了しても接続できません。エラー メッセージは次のとおりです:

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

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

php.com资料:
I am trying to connect to SQL Server 2000 from PHP
I bumped to following warning:
Warning: mssql_connect(): Unable to connect to server: SERVER/Portal
....... on line 5
on line 5 there is:
$db_connect = mssql_connect('SERVER/Portal', 'sa', 'my_passwd');
I did the following
1.enabled php_mssql.dll extension in PHP.ini
2.every dll is in proper place(System32 or PHP folder),including ntwdblib.dll
I search lots of profile throught web ,but no one give me proper answer to resolve it.
after a few hour ,I found the problem was caused by
ntwdblib.dll ,which version is 7.00.839 ,when I replaced old ntwdblib.dll with the new
ntwdblib.dll ,which version is 8.00.194 ,all problem are solved.
We had some, read A LOT, of problems with MSSQL under Windows 2003.
We had 2 the same windows, php, php-ini, everything machines but only one could connect.
Unable to connect was the error message.
Finnaly we checked the version of ntwdblib.dll and the one distributed with PHP was 7.00....
and the version of the one on the SQL Server install was 8.00.... so we copied this one in
the php and apache dir and it worked.

問題はこのようにして見つかりました。問題の原因は ntwdblib.dll です。

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

私が使用している PHP のバージョンは 5.25 です。インストールされているサーバーの 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 に正しく接続できない問題が解決されました。一日のほとんどがかかりましたが、それでも大きな収穫がありました。同じ問題に遭遇した兄弟たちに知らせるために投稿します。回り道を減らしましょう。

最後に、ターゲットの MSSQL コンピューターにファイアウォールが装備されている場合、特に Windows XP システムの場合はポート 1433 を開いてください。

上記の情報を読んだ後、sqlserver2000 をインストールした友人に「ntwdblib.dll」ファイルを渡してもらいました。ローカル テストは成功しましたが、サーバーにアップロードすると、info() mssql 拡張子がありませんでした。すでにロードされていました。なぜ存在しないのですか? php.ini ファイルとローカル ファイルの間には基本的に違いはありません。展開できないだけです。ローカルではすべてが正常です。

最後に、「ntwdblib.dll」のバージョンにまだ問題があることが判明し、それを置き換える上位バージョンの「ntwdblib.dll」を見つけました。

推奨学習: 「

PHP ビデオ チュートリアル

以上がphp が mssql に接続できない場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。