PHP и Oracle - oci_connect () ORA-12705: невозможно получить доступ к файлам данных NLS - PullRequest
2 голосов
/ 01 июля 2011

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

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

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

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

спасибо

Ответы [ 3 ]

3 голосов
/ 03 июля 2011

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

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

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

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

Я думаю, что реально все, что я могускажи удачи и божьей скорости.

1 голос
/ 01 июля 2011

Единственный способ заставить PHP подключиться к Oracle - это использовать Zend Framework.

http://framework.zend.com/

0 голосов
/ 15 июня 2015

Выполните эту процедуру, чтобы установить переменную среды NLS_LANG для баз данных Oracle.Чтобы установить переменную среды NLS_LANG для баз данных Oracle Определите значение NLS_LANG.В базе данных хранилища данных выполните команду

SELECT * FROM V $ NLS_PARAMETERS

Запишите значение NLS_LANG в формате [NLS_LANGUAGE] _ [NLS_TERRITORY]. [NLS_CHARACTERSET].Например: American_America.UTF8

Для Windows: перейдите в Панель управления> Система и перейдите на вкладку Дополнительно.Нажмите Переменные среды.

В разделе Системные переменные нажмите Создать.В поле Имя переменной введите NLS_LANG.В поле Значение переменной введите значение NLS_LANG, которое было возвращено на шаге 1. Формат значения NLS_LANG должен быть [NLS_LANGUAGE] _ [NLS_TERRITORY]. [NLS_CHARACTERSET].Например: American_America.UTF8.Для UNIX установите переменную, как показано ниже: setenv NLS_LANG

Например: setenv NLS_LANG American_America.UTF8.Если ваши данные являются 7-битным или 8-битным ASCII, а сервер Informatica работает в UNIX, то установите NLS_LANG _.WE8ISO8859P1 ВНИМАНИЕ: Убедитесь, что вы правильно установили переменную NLS_LANG, как указано в этой процедуре, иначе ваши данные не будут отображатьсяправильно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...