[ PHP ] 直接実行のPHPスクリプトからOracle接続エラー時は環境変数の登録を確認する

Pocket

コマンドラインや cron から PHP スクリプトを実行するときがあります。また、直接ではなくても シェルスクリプトから PHP スクリプトを起動するケースもあります。

しかし、Web ブラウザから起動した PHP は Oracle に接続できるが、cron 経由や直接起動した PHP スクリプトからは Oracle に接続できないといったことがあります。

実際にありました。。。

スポンサーリンク

環境変数の登録

接続できない可能性の1つとしては、環境変数 ORACLE_HOME が見つからず、tnsnames.ora の設定ファイルを見つけれていないことが考えられます。

環境変数が接続できない原因である場合には、シェルスクリプトや PHP スクリプトで環境変数を設定することによって Oracle へ接続できるようになるかもしれません。

シェルスクリプトで環境変数の登録

次の例は、シェルスクリプト内で環境変数 ORACLE_HOME を登録し、別の PHP スクリプトを呼び出すサンプルになります。なお、動作確認は、OS:Solaris10、PHP( + OCI8関数 ) で行っています。

#!/bin/sh

# ORACLE_HOME 環境変数のエクスポート
ORACLE_HOME=/opt/oracle/product/10.2.0/client_1
export ORACLE_HOME

# 実際に ORACLE に接続する PHP スクリプト
/path/to/script.php 

PHP スクリプト内で環境変数を登録

次は、PHP スクリプト内で環境変数を登録するサンプルになります。putenv 関数を使用して環境変数の登録を行うことが出来ます。

残念ながら未確認ということでご了承ください。

// 環境変数を PHP スクリプトの先頭で設定する
putenv("ORACLE_HOME=/opt/oracle/product/10.2.0/client_1");
参考
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *