2012-02-09 11 views
2

のようになります。今は私のセルを騒がしている問題です。PHPは接続できませんが、SqlPlusは

接続したいOracleサーバーがあります。 sqlplusコマンドラインを使用して簡単に接続できます。

PHPでoracleデータベースに接続しようとすると失敗します。ここではキャッチですが、私たちは別のデータセンターで同じ設定をしています。 PHPマシンがOracleデータベースに接続しようとしています。私は全く同じコードを実行し、両方のPHPマシンでPHPを同じように設定しました。

PHP1は、sqlplusとphpの両方を使用してOracle1に接続できます。

PHP2はsqlplusでOracle2に接続しますが、PHPでは接続しません。

ファイアウォールと一部のポートブロッキングが発生しています。私の現在の説明は、ポートphp2がoracle2への接続に使用していることがデフォルトの1521でなく、ブロックされていることです。私が手

ORAエラーは次のとおりです。

ORA-06413:接続がオープンしていません。

アイデア?情報が提供さから

+1

ポートが1521ではないことをご存知ですか?SQL * Plusが使用している接続の詳細がわかりますか?エイリアスを使用している場合は、 'tnsnames.ora'にありますか?あるクライアントが接続でき、別のクライアントが接続できない場合、ネットワークまたはファイアウォールの問題であるとは思われません。私は両方の接続が同じクライアントマシンから試みられていると仮定しています、それは本当ですか? –

+0

両方のマシンでPHPを同じように設定した場合、それらのうちの1つが別のポートを使用して接続するのはなぜですか?もしそうなら、私はあなたがそれらを同じように設定していないと言いたいと思います... – Svish

答えて

1

このエラーは、TNS接続記述子が何らかの理由で解析できないことを示します。これは通常、Oracleが接続情報を作成しようとしているときにシステム・コールを呼び出す際に問題になります。

プログラム名、ユーザー名、またはマシン名に角かっこはありますか?

64ビットWindows OS上で32ビットOracleクライアントを実行していますか?

コマンドラインからtnspingユーティリティを使用してみてください。それはあなたに何を伝えるのですか?

+0

PHPはC:\ Program Files(x86)\ PHPのパスにあります。私がしなければならなかったことは、カッコのないパスに入れたことだけでした。 (C:\ PHP) –

0

、私の最高の推測(プログラミングの原因にそれを狭くする)は、問題のマシンから送信されたデータベース名、ユーザ名またはパスワードがエスケープシーケンスが含まれていることである($\t\a\r、など)文字列リテラルとしてPHPスクリプトに入力すると、変更されます。

+0

私はそれも元々考えていましたが、PHP2とPHP1の両方の接続文字列は全く同じです。これは、次の形式の両方で書かれていることを意味します。'10 .10.10.10:1521/databaseName ' –

+0

エスケープシーケンスがなく、それ以外のコードが同じであれば、ネットワーキング/設定の問題かもしれません。これは、serverfaultに移行する必要があります。 – webbiedave

+0

ありがとうwebbiedave。多分、司会者が私のためにそれをするでしょう。 –

関連する問題