更新 (2010 年 5 月 21 日) 成功!
したがって、$head->desk() を何度も実行した後、解決しました。
仮想化の設定に応じて、使用するインスタント クライアントのバージョンに注意してください。
私は一般的な Instant Client をインストールしていました (ESX サーバーが Intel ではなく AMD プロセッサ上にあることに気づいていませんでした)。内部的には問題なく動作していました (内部の ESXi サーバーは 64 ビットではないため、CentOS のインストールは 32 ビットでした)。AMD64 上にある仮想化サーバーで 32 ビットのインストールを実行している場合でも、どのインスタント クライアントをインストールするかは依然として重要です。
最後にチェックしようと思ったのはこれでしたが、現在はすべて正常に動作しています。
これを理解するためにあらゆる可能なテストを実行するのを手伝ってくれたすべての人に感謝したいと思いますが、結局、仮想化の違いに気付かなかったのは私のせいでした.
更新 (2010 年 5 月 21 日) 内部で新しい VM にインストールしたときに、このバグを回避したと思っていましたが、狭まるリンクを見つけました。
これを投稿したとき、これを本番サーバーにインストールしようとしていました。1 週間の進捗がなく、開発に戻る必要があった後、社内サーバーの VM に Crap... CentOS を新しくインストールし、インスタント クライアントと oci8 を新しくインストールしました。
完璧に機能しました。
ただし、VM の正確なコピーを運用サーバーにアップロードしたところ、魔法のように機能しなくなりました。すべてを再インストールしようとしましたが、役に立ちませんでした。
したがって、絞り込むことができる唯一のことは、ファイアウォールの問題 (127.0.0.1 を試したときに同じ問題が発生しますが) またはおそらく ESX (実稼働サーバー) サーバーの問題であり、内部サーバーは ESXi を実行しています。
何かご意見は?
更新 (2010 年 3 月 8 日) Xdebug をインストールして、コードをトレースします。これは私が得ている出力です:
TRACE START [2010-03-08 17:53:05]
0.2090 327864 -> {main}() /data/aims3/http/octest.php:0
0.2091 327988 -> ini_set(string(14), string(1)) /data/aims3/http/octest.php:3
0.2093 327920 -> error_reporting(long) /data/aims3/http/octest.php:4
0.2094 328048 -> oci_connect(string(8), string(8), string(25)) /data/aims3/http/octest.php:6
トレースはその時点で停止します。
すべてを同じ方法でローカル サーバーにインストールしましたが、正常に動作します。私が完全に途方に暮れていると言うことは、それを軽く置くことです.
*注: make test を実行したところ、すべてのテストで FAIL が返されました。同じエラーが報告されるかどうかを確認するために、作業中のマシンでこれを実行したことはありません。make test が FAIL を報告するのに、make がエラーを報告しない理由は何ですか?
OCI8 PECL パッケージと一緒にエラーが報告されていない状態で Oracle Instantclient をインストールしましたが、途方にくれました。oci_connect で接続を開こうとすると、PHP スクリプト全体が停止します。
例:
<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
echo "before";
$conn = oci_connect("username", "password", "host");
echo "after";
?>
完全な空白ページを返します。モジュールがロードされ (phpinfo に表示されます)、すべてがエラーなしでインストールされます。
私は完全に途方に暮れています。
CentOS: 5.4
アパッチ: 2.2.3
PHP: 5.3.1
インスタントクライアント: 11.2
oci8: 1.4.1
何かご意見は?
ノート
Apache エラーログは何も報告しません
試みられたデバッグ:
1:
<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
echo "before";
if(!function_exists('oci_connect')) die('Oracle Not Installed');
echo "after";
?>
戻り値:
beforeafter
2:
ホストを //host に変更する
戻り値:
同じエラー