Oracle の 11g XE (景品バージョン) を使用して CentOS 5.6 サーバーを構成し、このガイドを使用して OCI8 をインストールし、問題なくデータベースと通信する既存の (カスタム) PHP アプリケーションを取得しました。そのサーバー Dev を呼び出し、次のビルドを開始しました。
私が現在取り組んでいる Prod サーバーは、Oracle 11G が無料版ではなく標準版であることを除いて、Dev と同じです。私の知る限り、他のすべては同一です。間違いなく同じ OCI RPM です。
警告: ocilogon() [function.ocilogon]: ORA-12154: TNS: /var/www/html/blah/blah.php で指定された接続識別子を解決できませんでした
「環境」の問題があると確信していますが、それを解決する方法がわかりません。
Oracle、Apache、OCI8、および PHP はすべて同じボックスに含まれています。
機能するもの:
tnsping orcl
Prod サーバーから。sqlplus user@orcl
Prod サーバーから。phpconfig();
すべてのOCI8のものを示しています。Dev と Prod の結果を比較すると、同じ結果が得られました。- VPN の反対側にある XP クライアントから Toad 経由で接続することもできます。
PHPをDBと通信させることができません。私を怒らせる!
Prod サーバーでグローバル検索を行ったところ、tnsnames.ora ファイルが 1 つしかありません。外観は次のとおりです。
ORCL = (説明 =
(アドレス = (プロトコル = TCP)(ホスト = localhost.localdomain)(ポート = 1521))
(CONNECT_DATA =
(サーバー = 専用) (サービス名 = orcl)
) )
役立つものを提供する必要がありますか? コメントを残してください。
私は本当に製品ボックスを平らにして最初からやり直したくありません...これを理解するのを手伝ってください!
[編集]
聞き手を見つけていないのでしょうね。好奇心から、リスナー サービスを停止し、エラーについて何も変わらないことを確認しました。
リクエストにより、ここにいくつかのコードがあります。
上記のエラーをスローするコード:
$dbh = OCILogon($vars[oracle_login], $vars[oracle_pwd], $vars[oracle_instance]);
変数は別のファイルで設定されます。
...
しかし、それをスキップできます。それらをコピーしてここに貼り付けている間、括弧を並べるのに少し時間がかかりました-そして、余分なものを見つけました.
打ち間違え!
どー。/facepalm.