[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 メーリングリストの案内