CentOS システムで mssql_connect() を使用すると、「サーバーに接続できません」というエラー メッセージが表示され続けます。
背景: centOS システムの Web サーバーは MSSQL データベース サーバーに接続する必要があります。 mssql データベースは MSSSQL2000 を使用します (MSSQL2008 も試しましたが、同じ問題がありました)。
centOS システムは、yum install メソッドを使用して Freetds および php-mssql モジュールをインストールします。phpinfo() を使用して、php-mssql が正常にインストールされたことを確認します。 tsql を使用して、centOS で mssql アカウントとパスワードへの接続をテストします。どちらも正しいです。ただし、PHP ファイルで mssql_connect() 関数を使用して接続すると、「サーバーに接続できません」というエラー メッセージが常に表示されます (error_log によるクエリ)。
プログラム コード:
$link = mssql_connect('192.168.100.10:1433', 'sa', '****') // ここには常にエラーが発生します。ポート番号を追加するか、 not: 1433、エラーは残ります (!$link)
{
die('Unable to connect! error: ' . mssql_get_last_message());
}
解決してください。
mssql_get_last_message() を出力して内容を確認します
インストールは正常のようですが、権限はありますか? sa が SQL サーバーの記録に失敗する状況に遭遇しましたが、最終的な設定で解決しました
もう一度テストして、さらに詳細なエラーメッセージ
権限がないので、当然接続できません
これは元のコードですか?なぜ mysql_connect() を間違って書いたのでしょうか? ? ? ?
プロジェクトは以前のデータベース サーバーに接続する必要があります。以前のデータベースは MSSQLServer2000 でしたが、現在は Web 環境に移行する必要があります。したがって、phpのmssqlモジュールを使用する必要があります。
Web サーバーは Linux 構造を使用し、データベースは別の Windows MSSqlServer サーバーであるため、localhost または 127.0.0.1 を使用するのは間違いです。最初のステップではデータベースが接続されていないため、mssql_get_last_message() には情報フィードバックが残ります。
tsql を使用してクエリを実行しましたが、すべてのクエリは正常です。
さらに、別のコンピューターで、freetds と php を手動で解凍してインストールし、再コンパイルしてインストールすると、mssql データベースに正常に接続できます。
私の判断では、yum メソッドを使用して freetds と php-mssql をインストールするときに、不足している手順があるかどうかはわかりません。そこで、この分野の専門家がいるかどうかを尋ねています。
ドメインを越えてアクセスしていますか?
デフォルトでインストールされている MSSQL では、通常どおり接続するには、サーバー構成マネージャーに移動してリモート接続を開く必要があります。 。
さらに、リモート リンクもファイアウォールの影響を受ける可能性があります。どちらかの側 (つまり、クライアントとサーバー) のファイアウォールによって、通常のリンクが禁止される場合があります。
最初にネットワーク環境を構成し、次に MSSQL 構成を確認し、最後に PHP プログラムを確認することをお勧めします。
centOS で /var/log/httpd/error_log ログをクエリすると、「...警告: mssql_connect(): サーバーに接続できません: 192.168.100.10:1433 in .....」
私の判断 おいしいです. freetds と php-mssql をインストールするとき、何が問題だったのかわかりません。
centOS で yum 設定を使用した経験のある人からアドバイスをお願いします。
2 つの方法:
1. コマンド setenforce 0 を実行します。
2. /etc/selinux/config を開き、SELINUX を無効に設定し、再起動します。
私も質問を提案しました。もっと詳しく。 http://ask.csdn.net/questions/69462