[PHP-users 16917]PHPとOracleの同時接続ができません
yusaku @ you.co.jp
yusaku @ you.co.jp
2003年 7月 23日 (水) 18:55:45 JST
はじめて投稿させていただきます。
Tsuchihashi ともうします。
今回の質問はWEB上でPHPとOracle9iとの同時接続ができないというものです。
まず、OracleのあるテーブルにCLOB型で画像ファイル(GIF)をバイナリで保存し
てあります。
その画像を一覧表示させようと呼び出し元のHTMLファイルに<img src="*.php">
を記述し、ブラウザで表示さようとするとかなりの確率でapacheが落ちます。た
だし1つだけの表示なら落ちません。
PHPのエラーログには【PHP Warning: _oci_open_server: ORA-12154: TNS: サ
ービス名を解決できませんでした】と記録されています。
文章ではうまくご説明できませんので下記のソースをご覧ください。
======================================
■環境
======================================
・Windows2000 Pro SP4
・Apache 1.3.27
・PHP 4.2.3
・Oracle9i Release 9.2.0.1.0
======================================
■Oracle テーブル構造
======================================
テーブル名:A_TABLE
ID(NUMBER型)| IMAGE (CLOB型)
---------------+------------------
1 | バイナリソース
2 | バイナリソース
3 | バイナリソース
======================================
■ソース1(呼び出しもと画像一覧ファイル)
ファイル名:list.html
======================================
<html>
<head>
<title>画像リスト</title>
</head>
<body>
<img src="image.php?ID=1"><br>
<img src="image.php?ID=2"><br>
<img src="image.php?ID=3"><br>
</body>
</html>
======================================
■ソース2(DBから画像を取り出し表示)
ファイル名:image.php
======================================
<?php
mb_http_output("pass");
header("Content-Type: image/gif\n\n");
$con = OCILogon(DBname, PASS, SID); //2回目以降のここでエラー
$sql = "SELECT IMAGE FROM A_TABLE WHERE ID = ".$_GET['ID'];
$stmt = OCIParse($con, $sql);
OCIExecute($stmt, OCI_DEFAULT);
$flag = OCIFetchInto($stmt, &$arr, OCI_ASSOC);
OCIFreeStatement($stmt);
OCILogoff($con);
/* ファイルの出力 */
echo $arr['IMAGE']->load();
?>
======================================
上のソースはかなり簡単にしております。
Oracleとの接続はほかのページではうまく接続できていますが、このページだけ
うまくいきません。
OCILogonをOCIPLogonやOCINLogonで試したのですがそれもうまくいきません。
MilacleLinux上のPHP+Oracleでも試しましたが同じ結果ですので環境はあまり関
係ないようです。
DBに画像を保存する方法はあまりよくない方法なんでしょうか?
ご教授よろしくおねがいいたします。
***************************
Yusaku Tsuchihashi
yusaku @ you.co.jp
**************************
PHP-users メーリングリストの案内