コマンドラインや 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");