Что бы не тратить зря ваше и свое время, опишу что было и что есть сейчас. Мои основные приложения написаны на php. Они живут на redhat6 с nginx + apache веб-серверами. Данные падают в MySQL DB, Но так же имеется множество импортов из Oracle and IBM Informix Баз данных , & mssql. Для Oracle & Informix я собрал и установил клиенты && скомпилировал библиотеки pdo_oci.so & pdo_informix.so. Несколько месяцев они работали как и ожидалось.
Но несколько дней назад админы вирт машин сделали с нашей виртуалки снэпшот и ребутнули ее. Теперь только MySQL и MsSql коннектоы работают, а Oracle & IBM Клиенты выкидывают ошибки.
Oracle : -28759 Failed : SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-28759: failure to open file (/usr/local/src/php-5.3.3/ext/pdo_oci/oci_driver.c:579)/opt/project/www/test.php149
IBM Informix : -23101 Failed : SQLSTATE=HY000, SQLDriverConnect: -23101 [Informix][Informix ODBC Driver][Informix]Unspecified System Error = -23101./opt/project/www/test.php146 Официальная дока говорит, что Informix ошибка связана с утраченными env переменными среды DB_LOACALE & CLIENT_LOCALE...и тд.
Само по себе это странно, так как я передаю эти параметры в строке подключения, при вызове объекта клиента, и это работало :
$dbh = new PDO («informix:host=example.ru; database=some_db; server=db_net; CursorBehavior=0; DB_LOCALE=en_US.57372; CLIENT_LOCALE=en_US.57372;», «db_login», «pass»);
Я пытался задать переменные среды для apache (httpd) , но ошибки по прежнему вылетают. Теперь эти параметры имеются даже после ребута, но проблему не решило. Наверное делаю что либо не так...
Касательно Oracle , дока говорит что ошибка связана с подгрузкой файлов. А более подробная дока уточняет что это ошибка классифицируется как ssl ошибка и связана с невозможностью клиента подключить ssl сертификаты кошелька. У меня настроено TCPS соединение с Oracle DB с использованием wallet. Кроме того , у меня включена трасировка запросов, но срабатывает она только когда запрашиваю напрямую sqlplus из терминала. Когда запрашиваю php скрипт тестовый, вылетает указанные ошибки и лога не пишется.
Соединение Ораакл клиента из терминала успешно проходит по ssl, и находит кошелек с сертификатами корректно. Но попытка подключиться через аппликуху фэйлится. Я пробовал переименовать файлы сертификатов проверить нет ли кэша, и sqlplus соединение из терминала показало ту же ошибку что файл не найден. Отсюда я сделал вывод что pdo_oci смотрит куда то в другую дирректорию относительно клиента Оракла. Какие env variable утеряны, или как проверить где ищутся эти файлы ? Последним я попробовал проверить, а видит ли апач файлы сертиыикатов. Я создал директорию /etc/oracle/wallet/ и поместил туда файлы кошелька. Переписал путь к кошельку в sqlnet.ora но даже после перезагрузки клиент оракла ищет файлы кошелька по старому пути!! Это кэш или что?
Вопросы :
1.Как установить правильные Informix переменные среды правильно, Или как решить эту проблему иными путями.
2.Как запустить полноценную трасеровку для клиентаОракла, и как выяснить какой файл он пытается найти точно? Пока все сходится на сертификатах, но где именно он их ищет?
3. Как избежать этих проблем в будующем? Как правильно хранить переменные сред чтобы они не слетали при перезагрузках/ребутах/ snapshot загрузках...и тд. ?