2008-11-16 4 views
5

DBD и Oracle Masters:Почему мой скрипт Perl CGI не находит DBD Oracle?

У меня есть веб-приложение Perl, которое ведет себя странно. Я использую его для чтения некоторых материалов из базы данных Oracle и отчета. У меня установлена ​​версия 11.1.0.6.0 мгновенного клиента Oracle. Я работаю на 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

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

Спасибо, Saker Гани

+0

Можете ли вы предоставить код для вызовов, указанных в сообщении об ошибке? – Svante 2008-11-16 22:15:42

ответ

2

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

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

1

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

1

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

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

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

Смежные вопросы