Сконфигурировал сервер CentOS 5.6 с Oracle 11g XE (бесплатная версия), установил OCI8 с помощью этого руководства и получил уже существующее (пользовательское) приложение PHP, без проблем связывающееся с базой данных , Позвонил этому серверу Dev и запустил следующую сборку.
Сервер Prod, над которым я сейчас работаю, похож на Dev, за исключением того, что Oracle 11G является стандартной версией, а не бесплатной версией. Все остальное, насколько я знаю, идентично. Определенно те же самые обороты OCI.
Предупреждение: ocilogon () [function.ocilogon]: ORA-12154: TNS: не удалось
разрешить идентификатор подключения, указанный в
/var/www/html/blah/blah.php
Я уверен, что у меня есть "экологическая" проблема, но я не могу понять, как ее решить.
Oracle, Apache, OCI8 и PHP находятся в одном окне.
Что работает:
tnsping orcl
с сервера Prod.
sqlplus user@orcl
от производителя
сервер.
phpconfig();
показывает все содержимое OCI8. Сравнил результаты на Dev и Prod и они идентичны.
- Я также могу подключиться через жабу от клиента XP на другом конце VPN.
Я просто могу не заставить PHP общаться с БД. Сводит меня с ума!
Сделал глобальный поиск на сервере Prod, есть только один файл tnsnames.ora. Вот как это выглядит:
ORCL = (ОПИСАНИЕ =
(ADDRESS = (PROTOCOL = TCP) (HOST = localhost.localdomain) (PORT = 1521))
(CONNECT_DATA =
(СЕРВЕР = ВЫДЕЛЕНО)
(SERVICE_NAME = orcl)
))
Что-нибудь, что я должен предоставить, это помогло бы? Просто оставьте комментарий.
Я на самом деле не хочу сглаживать и начинать заново с коробки Prod ... Пожалуйста, помогите мне разобраться!
[редактирование]
Наверное, он не находит слушателя. Из любопытства я остановил службу прослушивания и подтвердил, что ничего об ошибке не меняется.
По запросу вот какой-то код.
Код, который выдает ошибку, о которой я упоминал выше:
$dbh = OCILogon($vars[oracle_login], $vars[oracle_pwd], $vars[oracle_instance]);
Переменные заданы в другом файле:
...
Но мы можем пропустить это. Копируя и вставляя их сюда, я воспользовался моментом, чтобы выстроить скобки - и нашел дополнительное.
Опечатка!
Doh. /facepalm.