[PHP-users 30543] Re: Miracle LinuxとOracle10gR2とPHPで環境構築

Daisuke Tonoki tonoki @ miraclelinux.com
2006年 10月 16日 (月) 14:30:26 JST


唐木@ミラクルです。

どうもお手数かけています。
気づくのが遅れまして、返信が遅くなりました。すいません。

Oracle10gR2の場合、一番の注意点はデフォルトでは
ORACLE_HOMEのアクセス権が750になっているため、
apacheの実行ユーザ権限ではライブラリや設定ファイルにアクセスできない点で
す。

少々乱暴ですが、/opt/appに対して以下実行すると動作可能です。
 # chmod -R 755 /opt/app
10gR1まではこのパーミッションだったのですが、まあイロイロあるのだと思い
ます。
そろそろ他の方法も考えなきゃいけませんね>私

ですので、以下の事項を確認していただくのが早いと思います。
1.$ORACLE_HOMEはapacheユーザで参照できるか?
 # chmod -R 755 /opt/app

2.oracleユーザにてsqlplusを利用した接続ができるか?
$ sqlplus scott/tiger @ orcl

3.oracleユーザでphpのファイルがCLIで実行できるか?
$ php /home/hoge/public_html/test.php

4.apacheの環境変数にORACLE関連がセットされているか
$ cat /etc/sysconfig/httpd

でわでわ

On Sun, 15 Oct 2006 04:01:36 +0900
Eijun Kitamura <eijun @ hal.ne.jp> wrote:

> 北村と申します。
> 
> 過去ログを検索しようとしましたが、保存書庫の検索ページがリンク切れで
> 調べられなかったので、もし過去に同様の質問があったらお許しください。
> 
> 1台のサーバで、Miracle Linux V4にOracle 10g R2とPHPをインストールして、
> システム環境構築を試みているのですが、PHPからOracleにアクセスできません。
> 
> 後に記述するサンプルコードを実行すると、下記のエラーが返ってきます。
> 
> Warning: ocilogon() [function.ocilogon]: _oci_open_server: Error while trying to retrieve text for error ORA-12154 in /home/hoge/public_html/test.php on line 2
> 
> Warning: ociparse(): supplied argument is not a valid OCI8-Connection resource in /home/hoge/public_html/test.php on line 4
> 
> Warning: ociexecute(): supplied argument is not a valid OCI8-Statement resource in /home/hoge/public_html/test.php on line 6
> 
> Warning: ocinumcols(): supplied argument is not a valid OCI8-Statement resource in /home/hoge/public_html/test.php on line 7
> 
> Warning: ocifetch(): supplied argument is not a valid OCI8-Statement resource in /home/hoge/public_html/test.php on line 18
> 
> Warning: ocifreestatement(): supplied argument is not a valid OCI8-Statement resource in /home/hoge/public_html/test.php on line 33
> 
> 
> (サンプルコード)
> <?php
>     $conn = ocilogon("scott", "tiger", "orcl");
> 
>     // SQL文のparse
>     $stmt = OCIParse($conn,"select * from emp");
> 
>     // SQL文の実行
>     OCIExecute($stmt);
>     $ncols = OCINumCols($stmt);
> 
>     echo "<TABLE BORDER='1'>";
>     echo "<TR>";
>     for ( $i = 1; $i <= $ncols; $i++ ) {
>         $column_name  = OCIColumnName($stmt,$i);
>         echo "<TH>" . $column_name . "</TH>";
>     }
>     echo "</TR>";
> 
>     // データのFetch
>     while(OCIFetch($stmt))
>     {
>         echo "<TR>";
>         for ( $i = 1; $i <= $ncols; $i++ ) {
>             $column_name  = OCIColumnName($stmt,$i);
> 
>             // データの表示
>             echo "<TD>" . OCIResult($stmt, $column_name) . "</TD>";
>         }
>         echo "</TR>";
>     }
> 
>     echo "</TABLE>";
> 
>     // リソースの解放
>     OCIFreeStatement($stmt);
> 
>     // Oracleから切断
>     OCILogoff($conn);
> ?
> 
> エラーを読んでみるに、最初のエラー「ORA-12154」が原因のようで、
> ネットで調べると、「ORA-12154: TNS: 指定された接続識別子を解決できませんでした.」
> ということだそうです。
> 
> おそらく、PHPがtnsnames.oraを読めていないのだと推測しています。
> 
> 気になる点は、phpinfo()を見ると、oci8の欄が
> 
> Oracle Versionが10.1
> Compile-time ORACLE_HOMEが/opt/oracle/product/10.1.0
> Libraries Usedが-Wl,-rpath,/opt/oracle/product/10.1.0/lib -L/opt/oracle/product/10.1.0/lib -lclntsh
> 
> となっていることです。
> 当方のバージョンは10.2です。
> 
> OracleはMiracle Linuxに付属しているoranaviというツールを使ってインストールしました。
> ApacheもPHPもMiracle Linuxのパッケージを使っています。(デフォルトでインストールされるものです)
> 
> この問題の解決方法をご存知の方がいらっしゃいましたら、
> 具体的な解決手順をご教授、または、参考サイトの紹介でもよろしいですので、お願いいたします。
> 
> よろしくお願いいたします。
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3

--
-------------------------------------------------------
ミラクル・リナックス株式会社 唐木 大介 Daisuke Tonoki
                 TEL 03-5404-5050 FAX 03-5404-5051
-------------------------------------------------------



PHP-users メーリングリストの案内