[PHP-users 4424] PHP4.0.5 + Oracleで接続時に何のレスポンスも帰ってきません

谷中 志織 php-users@php.gr.jp
Sun, 23 Dec 2001 00:59:08 +0900


谷中と申します。

早速ですが、PHPからOracleに接続できないので大変困っております。
もし何かヒントでもあれば、ご教授いただきたく思います。

-----
Webサーバ
OS:RedHat Linux6.2J
http: Apache1.3.20
PHP: Version 4.0.5

----
DBサーバ A
OS: SPARC Solaris7
DB: Oracle 8.1.6

DBサーバ B
OS: Solaris7
DB: Oracle 8.0.5

DBサーバ C
OS: Solaris2.6.1
DB: Oracle 8.1.5

以上の環境で、WebサーバにはOracleClient8.1.6が
インストールされています。Webサーバから、sqlplusで上記の3つの
DBサーバに接続できることは確認しています。
(このことからTNSの設定は済んでると思います。)

環境変数として、
ORACLE_HOME=/dir1/dir2/OraHome
ORACLE_BASE=/dir1/dir2/OraHome
(注:Oracleクライアントのみのインストールなので、HOMEとBASEが同じになってい
ます)
NLS_LANG=japanese_japan.ja16sjis
ORACLE_SID=DB-A
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
ORACLE_TERM=vt100
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

まずApacheのコンパイルでは、
# configure --enable-shared=max --enable-shared=so
# cd src
# vi Makefile
EXTRA_LDFLAGS=-lpthread を記述
# make 
# make install

次にPHPのコンパイルでは、
# configure --with-apxs=/usr/local/apache/bin/apxs \
--with-oracle=$ORACLE_HOME \
--with-oci8=$ORACLE_HOME \
--enable-sigchild \
--without-mysql
# make
# make install
# cp php.ini-dist /usr/local/lib

これでApacheを起動、エラーは出ません。
テストプログラムとして、以下のスクリプトを作成しました。

<?php
	error_reporting(E_ALL);

	$conn = OCILogon("scott", "tiger", "DB-A");
	$sql = OCIParse($conn,"select * from category");

	OCIExecute($sql);
	$cols = OCINumCols($sql);

	print "Conn ->".$conn;
	print "Cols ->".$cols;
	
	OCIFreeStatement($stmt);
	OCILogoff($conn);
?>

これでブラウザからみると、全くレスポンスが帰ってきません。
IEだとサーバエラーのページが表示され、
ネスケだと「無効なデータ」というダイアログが表示されます。

そこで、OCI関係の関数を全てコメントアウトしてみると、Conn->  Cols-> とは表示
されますので
PHP自体は動作していると思います。
今度は8.0.5であるDB-Bに対して接続しようとしても同様(ただしOCI関数ではなく、
Ora_関数に
書き換えています)。同様にDB-Cに対してもダメです。

実は今回、Linux上でPHPを動かすのは初めてでして、以前はSolaris上でPHPをコンパ
イル
したことがあるのですが(上記と全く同じオプション)
その時は、きちんと動作しています。

ちなみに全くレスポンスが帰ってこない、というのでtelnet で80番を叩いてみると

----------------------------------------
Connected to web.server (192.168.0.1).
Escape character is '^]'.
GET /test.php HTTP/1.0

Connection closed by foreign host.
----------------------------------------

となり、切断されてしまいます。HEADの場合は、

----------------------------------------
Connected to web.server (192.168.0.1).
Escape character is '^]'.
HEAD /test2.php HTTP/1.0

HTTP/1.1 200 OK
Date: Sat, 22 Dec 2001 15:58:58 GMT
Server: Apache/1.3.20 (Unix) mod_jk PHP/4.0.5
X-Powered-By: PHP/4.1.0
Connection: close
Content-Type: text/html

Connection closed by foreign host.
----------------------------------------
です。ヘッダ情報は正常ですので、結局のところ、Oracleに接続しようとしてるとこ
ろで
こけてるのだと思うのですが、PHPからも全く出力がなく、完全にシャットアウトさ
れてしまってるのが
現況だと思われます。(ちなみにこのhttpヘッダから分かるように、mod_jkも同時に
動かしていますが
これは関係ないと思われるので、記述を省きました)

ちなみにLinuxに最初に入っていた rpmのhttpdやPHPのパッケージは全て削除した上
で
上記のインストールを行っています。

それと試しにPHP4.0.6、PHP4.1.0でもやってみましたが、症状は全く同じでした。
ここまでの情報で何かお気づきの点がございましたら、
ぜひ教えていただきたく思います。


よろしくお願いいたします。



// MTI Ltd.   IT Division
// Shiori Taninaka <taninaka_s@mti.co.jp>
// Tel +81-3-5325-6211
// Fax +81-3-5325-6223