[PHP-users 26111] Re: CLI版PHP OCIライブラリロードエラー

Kazumasa Gotoh kgotoh @ cic-kk.co.jp
2005年 7月 11日 (月) 18:50:55 JST


From: nagaura <nagaura @ sys-com.co.jp>
Date: Mon, 11 Jul 2005 17:21:52 +0900

> コマンドラインより、PHPを使用し定期的にoracleに接続し、
> データを取得し、HTMLに変換する機能を実装しようとしておりまして
> まず、DSO版でブラウザ上で表示確認しながら実装していました。
> スクリプトが完成し、いざコマンドライン上で実行しようとすると
> OCI関数が見つからないというエラーが表示されてうまく実行できません。
> 原因はライブラリのパスの設定のように思うのですが、oci8.sl でどのように
> libclntsh.sl.8.0 を参照しようとしているのかわからないため確認できません。
> どなたかご教授いただけないでしょうか。宜しくお願いします。

LD_LIBRARY_PATH に $ORACLE_HOME/lib32 が含まれていないのでしょう。

HP-UX は長いこと触っていないので忘れましたが、

> #!/usr/bin/sh

HP-UX の /usr/bin/sh って何 shell なのでしょう?
ごく普通の B Shell ではないのでしょうか?

> # for using PHP with oracle support, set the following
> export ORACLE_BASE=/home/oracle
> export ORACLE_HOME=/home/oracle/app/oracle
> export ORACLE_SID=hoge
> export NLS_LANG=JAPANASE_JAPAN.JA16EUC
> export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
> export SHLIB_PATH="$ORACLE_HOME/lib32:$APACHE_PREFIX/php/lib/php/extensions:$SHLIB_PATH"
> export LD_LIBRARY_PATH=$ORACLE_HOME/lib32

一見、LD_LIBRARY_PATH が通っているように見えますが、この書き方は
bash などでは使えますが、ただの B Shell では使えません。例えば、

  ORACLE_BASE=/home/oracle
  export ORACLE_BASE

と、書かなければなりません。Linux などの標準シェルは bash なので
Linux ばかり使っていると勘違いするのかも知れませんね。

逆に bash を例えば /usr/local/bin にインストールして、スクリプトの先頭に

  #!/usr/local/bin/bash

と書くという方法もあるでしょう。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
(株) セントラル情報センター
                             後藤和政    kgotoh @ cic-kk.co.jp


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