Убедитесь, что у вас есть 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 работает как пользователь "daemon") будет читать и выполнятьпривилегия для файлов в разделе ORACLE_HOME