2008-11-16 5 views
5

DBD i Oracle Masters:Dlaczego mój skrypt CGI Perl nie może znaleźć DBD bazy danych Oracle?

Mam aplikację internetową Perl, która zachowuje się dziwnie. Używam go do odczytu pewnych rzeczy z bazy danych Oracle i raportu. Mam zainstalowaną wersję 11.1.0.6.0 klienta błyskawicznego Oracle. Używam programu WinXP i ustawię zmienną środowiskową PATH na bieżącą lokalizację klienta. Mam Apache2 na mój serwer WWW.

Oto kwestia: gdy uruchamiam aplikację z wiersza poleceń, działa ona bez żadnych problemów. Jednak, gdy biegnę z http://127.0.0.1/cgi-bin/a.cgi, pojawia się następujący komunikat o błędzie dostępu DB:

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

Intuicja mówi mi, że jest to kwestia zgody, ale nie jestem pewien, gdzie szukać dalej. Czy ktoś może rzucić trochę światła na to? Byłbym wdzięczny za każdą pomoc.

Dzięki, Saker Ghani

+0

Czy można podać kod połączeń wymienionych w komunikacie o błędzie? – Svante

+0

Czy jest jakiś błąd w dzienniku błędów Apache? –

Odpowiedz

2

Fakt, że błąd pokazuje pełną ścieżkę pliku .dll sugeruje, że system nie mający żadnych problemów ze znalezieniem DLL, tak że robi z powrotem swoją teorię, że uprawnienia do plików są problem.

Aby sprawdzić, czy to naprawdę problem z uprawnieniami, spróbuj napisać prosty skrypt CGI Perla, który nie robi nic poza bezpośrednim otwarciem tego konkretnego pliku .DLL (z normalną rozmową open) i informuje, czy zadziałało, czy nie.

1

Dzięki Alnitak. Próbowałem zrobić to, co zasugerowałeś, a "otwórz" z powodzeniem otworzyło "C: /usr/lib/auto/DBD/Oracle/Oracle.dll". Pamiętam, że widziałem dokładnie ten błąd, kiedy pracowałem nad inną maszyną, ale było tak dlatego, że biblioteki Oracle Instant Client zmagały się z tym. Po ich zainstalowaniu i ustawieniu zmiennej "Ścieżka" wszystko zaczęło działać poprawnie.

1

Miałem ten sam problem, gdy podczas uzyskiwania dostępu do programu cgi perl poprzez interfejs zgłaszał błąd "Błąd instalacji (Oracle): Nie można załadować" C:/Perl/lib/auto/DBD/Oracle/Oracle .dll dla modułu DBD :: Oracle: load_file: Odmowa dostępu w C: /Perl/lib/DynaLoader.pm linia 201 ".

byłem przy użyciu Perl 5.10 Okno na 2003 Server z IIS 6.

Uchwała było dać uprawnienia do katalogu Perl „Każdy”, jak również na Oracle Install.

Powiązane problemy