PHP и Oracle - oci connect() ORA-12705: Не удается получить доступ к файлам данных NLS


Мы используем Oracle на нашем сервере в течение многих лет, но кто-то из него удалил его вчера без четкого предупреждения, и это действительно бросило наши системы!

Я действовал по совету cwallenpoole (спасибо!) и добился значительного прогресса, и PHP теперь, по крайней мере, включает функции oracle (т.Е. oci_connect), но теперь у меня появилось другое сообщение об ошибке:

" Предупреждение: oci_connect() [function.oci-connect]: ORA-12705: Невозможно получить доступ к файлам данных NLS или недопустимо окружающая среда"

Мы убедились, что файлы tnsnames.ora и т. Д. Находятся в правильном месте, но все еще не испытываем радости:(

Спасибо

Author: Nick, 2011-07-01

3 answers

Хорошо. Это мой личный кошмар. Я серьезно просыпаюсь посреди ночи... или нет, но я потратил несколько дней на эту проблему.

Итак, вот что сработало для меня:

  1. Есть ли у вас Мгновенный клиент Oracle ? Если не получите его.
  2. У вас есть Oracle SDK? Если не получите его.
  3. Разархивируйте instantclient.
  4. Распакуйте пакет SDK в подкаталог
  5. Добавьте ORACLE_HOME в качестве экспортируемой переменной командной строки ($ORACLE_HOME в *nix, %ORACLE_HOME% в выигрыше). Попросите его указать полный путь к указанной выше папке instantclient.
  6. Создайте ORACLE_BIN и попросите его указать на SDK.
  7. Добавьте ORACLE_HOME в свой ПУТЬ.
  8. Перезапустите Apache...

Итак... это то, что я обычно делаю... И в целом это работает... В основном...

Я думаю, что реально все, что я могу сказать, - это Удачи и Удачи.

 3
Author: cwallenpoole, 2011-07-03 19:19:56

Единственным способом, которым я мог заставить PHP подключиться к Oracle, было использование платформы Zend.

Http://framework.zend.com/

 1
Author: Ed Manet, 2011-07-01 14:41:05

Выполните эту процедуру, чтобы установить переменную среды 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, как указано в этой процедуре, иначе ваши данные будут отображаться неправильно.

Перезагрузите компьютер после создания переменной.

 0
Author: जयदेव, 2015-06-15 11:15:13