Невозможно подключиться к Oracle Database 10g, используя C ++ CGI с httpd 2.2 - PullRequest
0 голосов
/ 28 сентября 2011

Я пишу CGI-программу на C ++. Предполагается, что он работает на версии 2.2 HTTP-сервера Apache и должен подключаться к базе данных Oracle 10g.

Я пытался запустить эту программу CGI без httpd, и она могла успешно подключиться к базе данных Oracle, но как только я запустил ее через сервер httpd, она написала следующее сообщение в error_log.

Ошибка при попытке получить текст для ошибки ORA-12546

Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2011

Просто предположение, но распространенная причина такого рода вещей заключается в том, что среда ORACLE_HOME не установлена ​​для вашей программы CGI.Apache обычно запускается во время загрузки, и поэтому пропускает все файлы типа / etc / profile.

Вам необходимо убедиться, что установлен ORACLE_HOME, и в зависимости от настроек вашей системы вам также может понадобиться LD_LIBRARY_PATHобновлено, чтобы включить $ORACLE_HOME/lib.Вам либо нужна ваша программа для установки окружения, либо в вашей конфигурации apache есть директива SetEnv.Чтобы понять, в этом ли проблема, просто напишите тестовый CGI, который выводит все переменные среды.

Теперь, если CGI работает под mod_perl, это немного сложнее, потому что mod_perl имеет тенденцию быть довольно анальным по поводубезопасность окружающей среды.Думаю, мы закончили с использованием директивы Perl * Something * Require, чтобы установить ее в perl.Прошу прощения за расплывчатость, было много лет назад ....

0 голосов
/ 28 сентября 2011

Как правило, это означает, что вы столкнулись с ошибкой ORA-12546, но в вашей клиентской библиотеке не установлены действительные сообщения об ошибках. Это не проблема, вы можете искать номера ошибок здесь . В вашем случае это "TNS: разрешение отклонено".

Имеет ли ваш пользователь CGI разрешение на доступ к tnsnames.ora?

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