Убедитесь, что у вас есть ORACLE_HOME, ORACLE_SID и LD_LIBRARY_PATH в окружениях Apache. Помните, что Apache работает как демон, поэтому он не обязательно имеет доступ к тем же переменным среды, что и при запуске PHP-скриптов из командной строки.
ORACLE_HOME=/u01/app/oracle/product/10.1
ORACLE_SID=orcl
export ORACLE_HOME ORACLE_SID
export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${LD_LIBRARY_PATH}
В зависимости от того, где находится ваш сервер базы данных и как вы к нему подключаетесь, вы также можете установить TWO_TASK или TNS_ADMIN. Чтобы убедиться, что используется правильный набор символов, вы также можете установить NLS_LANG.
ИЗМЕНИТЬ
Обычно я собираю PHP из исходников, поэтому у меня есть полный контроль:
Предполагая, что на сервере работает стандартный клиент Oracle, мой ./configure включает:
--with-pdo-oci=$ORACLE_HOME
В нескольких случаях, когда мне нужно было создать мгновенный клиент Oracle, я использовал
--with-pdo-oci=instantclient,/usr,10.2.0.3
в моей строке ./configure
Обратите внимание, что я использую PDO_OCI, а не OCI8, но ./configure должен быть похожим
Другой шаг, который я предпринимаю при развертывании на новом сервере, заключается в том, чтобы гарантировать, что пользователь/группа apache (как определено директивами User и Group в httpd.conf... мой apache запускается как пользовательский «демон») будет читать и привилегия выполнения файлов в ORACLE_HOME
person
Mark Baker
schedule
07.03.2011