PHP + Oracle 環境を作った際、cliから php -m
を実行するとモジュール一覧に oci8 と PDO_OCI は表示されるのに、apache を起動すると以下エラーが出て oci8 も PDI_OCI も認識されない。
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/oci8.so' - libclntsh.so.12.1: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_oci.so' - libclntsh.so.12.1: cannot open shared object file: No such file or directory in Unknown on line 0
いろいろやった結果、selinux が悪さをしていた様子。以下を実行して Permissive モードにしたらエラーが消えて認識されるようになった。
setenforce 0
しかし次は ORA-01804 のエラーが出て接続ができない。こっちは Apache の環境変数に ORACLE_HOME 等を設定し apache 再起動することで回避できた。
vim /etc/sysconfig/httpd export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1 export LD_LIBRARY_PATH=$ORACLE_HOME/lib export NLS_LANG=Japanese_Japan.JA16EUC