Почему мой Perl CGI-скрипт не может найти Oracle DBD? - PullRequest
5 голосов
/ 17 ноября 2008

DBD и Oracle Masters:

У меня есть веб-приложение на Perl, которое ведет себя странно. Я использую его для чтения некоторых вещей из базы данных Oracle и отчета. У меня установлена ​​версия 11.1.0.6.0 Oracle Instant Client. Я работаю на WinXP и переменная окружения PATH установлена ​​на мгновенное местоположение клиента. У меня есть Apache2 для моего веб-сервера.

Вот в чем проблема: когда я запускаю приложение из командной строки, оно работает без помех. Однако при запуске из http://127.0.0.1/cgi-bin/a.cgi, я получаю следующую ошибку доступа к БД:

install_driver(Oracle) failed: Can't load 'C:/usr/lib/auto/DBD/Oracle/Oracle.dll' for module DBD::Oracle: load_file:The specified module could not be found at C:/usr/lib/DynaLoader.pm line 202. at (eval 9) line 3

Интуиция говорит мне, что это проблема с разрешением, но я не уверен, где искать дальше. Может кто-нибудь пролить некоторый свет на это? Я был бы очень признателен за любую помощь.

Спасибо, Балобан Гани

Ответы [ 3 ]

2 голосов
/ 17 ноября 2008

Тот факт, что ошибка показывает полный путь к .DLL, говорит о том, что у системы нет проблем с поиском DLL, что подтверждает вашу теорию о том, что проблема с правами доступа к файлам.

Чтобы проверить, действительно ли это проблема с разрешениями, попробуйте написать тривиальный сценарий Perl CGI, который просто открывает этот конкретный файл .DLL (с ​​обычным вызовом open) и сообщает, работает ли он или нет.

1 голос
/ 21 июня 2010

У меня была та же проблема, когда при доступе к программе cgi perl через интерфейс сообщалось об ошибке «Ошибка установочного драйвера (Oracle): невозможно загрузить C: / Perl / lib / auto / DBD / Oracle / Oracle. dll 'для модуля DBD :: Oracle: load_file: доступ запрещен в строке C: /Perl/lib/DynaLoader.pm 201 ".

Я использовал Perl 5.10 на Windows 2003 Server с IIS 6.

Было принято решение предоставить разрешения для каталога Perl «Все», а также для папки установки Oracle.

1 голос
/ 17 ноября 2008

Спасибо, Альнитак. Я попытался сделать то, что вы предложили, и «открыть» успешно открыл «C: /usr/lib/auto/DBD/Oracle/Oracle.dll». Я помню эту точную ошибку, когда я разрабатывал на другом компьютере, но это было из-за того, что библиотеки Oracle Instant Client на нем не работали. После того, как я установил их и установил переменную Path, все стало работать нормально.

...