PHP и Oracle - oci connect() ORA-12705: Не удается получить доступ к файлам данных NLS
Мы используем Oracle на нашем сервере в течение многих лет, но кто-то из него удалил его вчера без четкого предупреждения, и это действительно бросило наши системы!
Я действовал по совету cwallenpoole (спасибо!) и добился значительного прогресса, и PHP теперь, по крайней мере, включает функции oracle (т.Е. oci_connect), но теперь у меня появилось другое сообщение об ошибке:
" Предупреждение: oci_connect() [function.oci-connect]: ORA-12705: Невозможно получить доступ к файлам данных NLS или недопустимо окружающая среда"
Мы убедились, что файлы tnsnames.ora и т. Д. Находятся в правильном месте, но все еще не испытываем радости:(
Спасибо
3 answers
Хорошо. Это мой личный кошмар. Я серьезно просыпаюсь посреди ночи... или нет, но я потратил несколько дней на эту проблему.
Итак, вот что сработало для меня:
- Есть ли у вас Мгновенный клиент Oracle ? Если не получите его.
- У вас есть Oracle SDK? Если не получите его.
- Разархивируйте instantclient.
- Распакуйте пакет SDK в подкаталог
- Добавьте ORACLE_HOME в качестве экспортируемой переменной командной строки ($ORACLE_HOME в *nix, %ORACLE_HOME% в выигрыше). Попросите его указать полный путь к указанной выше папке instantclient.
- Создайте ORACLE_BIN и попросите его указать на SDK.
- Добавьте ORACLE_HOME в свой ПУТЬ.
- Перезапустите Apache...
Итак... это то, что я обычно делаю... И в целом это работает... В основном...
Я думаю, что реально все, что я могу сказать, - это Удачи и Удачи.
Единственным способом, которым я мог заставить PHP подключиться к Oracle, было использование платформы Zend.
Выполните эту процедуру, чтобы установить переменную среды NLS_LANG для баз данных Oracle. Чтобы задать переменную среды NLS_LANG для баз данных Oracle Определите значение NLS_LANG. В базе данных хранилища данных выполните команду
ВЫБЕРИТЕ *ИЗ V$NL_ПАРАМЕТРОВ
Запишите значение NLS_LANG, которое находится в формате [NLS_LANGUAGE]_[NLS_TERRITORY].[NL_ХАРАКТЕРИСТИКА]. Например: Американо-американская.UTF8
Для Windows: Перейдите к Панели управления > Система и перейдите на вкладку Дополнительно. Щелкните Переменные среды.
В разделе Системные переменные нажмите кнопку Создать. В поле Имя переменной введите NLS_LANG. В поле Значение переменной введите значение NLS_LANG, которое было возвращено на шаге 1. Формат значения NLS_LANG должен быть [NLS_LANGUAGE]_[NLS_TERRITORY].[NL_ХАРАКТЕРИСТИКА]. Например: American_America.UTF8. Для UNIX установите переменную, как показано ниже: setenv NLS_ЛАНГ
Например: setenv NLS_LANG Американо-американская.UTF8. Если ваши данные является 7-разрядным или 8-разрядным ASCII, а сервер Informatica работает в UNIX, затем установите NLS_ЛАНГ _.WE8ISO8859P1 ВНИМАНИЕ: Убедитесь, что вы правильно установили переменную NLS_LANG, как указано в этой процедуре, иначе ваши данные будут отображаться неправильно.
Перезагрузите компьютер после создания переменной.