ugrás a tartalomhoz

CGI-DBI használatakor Internal Server Error hibát dob az Apache

Anonymous · 2006. Május. 31. (Sze), 11.50
UHU - Linux 1.1 alatt szeretnék CGI programot írni...

A mysql-t, Apache-t, DBI (mysql) modult sikeresen fel is tettem. Az adatbázis-kezelés működik is rendesen Perl programoknál, de miután CGI-vel szeretném használni, nem megy. A CGI is megy az Apache-on. Miután a "use DBI;" sort beültetem a CGI-be valami hibát ír ki az oldalra, és nem fut le, de ha .pl fájlként futtatom terminálban működik rendesen. Már mindent próbáltam, sehol nem írnak semmmi konkrétumot erről. Lehet az Apache-al van baj (httpd.conf?, de mit írjak bele?). A jogosultságok szerintem jók lehetnek. Vagy más modult kell feltenni ehhez a Perlhez?

Konkrétan ezt írja ki a weboldalra:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator,
 you##kukac##example.com and inform them of the time the error occurred,
and anything you might have done that may have
caused the error.</p>
<p>More information about this error may be available
in the server error log.</p>
</body></html>
Mi lehet a probléma?
Kérem aki jártas ebben a témában, az segítsen! Köszönöm!
 
1

Az a hiba...

janoszen · 2006. Május. 31. (Sze), 13.54
Az a hibaüzenet azt jelenti, hogy elbacarintottad a httpd.conf-ot. Kukkantsd meg, hogy mit toltál el.
2

Nem feltétlen

pint3r · 2006. Május. 31. (Sze), 14.40
Ilyen hibát dob akkor is, ha a cgi futtatása során hibába ütközik. Pl.: ismeretlen függvény.

Azt ajánlom a scripted elejébe ezt írd: #!/usr/bin/perl -w
(Értelemszerűen a perl értelmező elérési útját írd át a megfelelőre!)
Majd pedig nézd meg az Apache error log-ját, az lesz a Te barátod hosszútávon. ;)
3

válasz

Anonymous · 2006. Május. 31. (Sze), 16.11
A httpd.conf-ban nincs hiba (maximum hiányosság, de akkor mi?).

Az error.log-ban peig a következőt írta:

[Wed May 31 15:33:30 2006] [error] [client 127.0.0.1] Can't locate loadable object for module DBI in @INC (@INC contains: /usr/lib/perl5/5.8.3/i386-linux-thread-multi /usr/lib/perl5/5.8.3 /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl .) at /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi/DBI.pm line 255
[Wed May 31 15:33:30 2006] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi/DBI.pm line 255.
[Wed May 31 15:33:30 2006] [error] [client 127.0.0.1] Compilation failed in require at /var/www/cgi-bin/index.cgi line 3.
[Wed May 31 15:33:30 2006] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at /var/www/cgi-bin/index.cgi line 3.
[Wed May 31 15:33:30 2006] [error] [client 127.0.0.1] Premature end of script headers: index.cgi


Tehát a DBI.pm BEGIN tagjában lehet valami hiba, illetve itt nem ismer valamit az apache, mert pl. kiterjesztésű fájloknál terminálban történő futtatásnál minden rendben van a DBI modullal. A CGI is fut rendesen, csak a "use DBI;" sort ha beteszem, akkor írja ki a hibát. Szerintem apache-al lehet probléma, de mi? Kell valami plussz még hozzá? Esetleg a httpd.conf-hoz írni valamit???
4

Nem találja a DBI-t

Török Gábor · 2006. Május. 31. (Sze), 16.57
Egy többsoros hibaüzenetnél mindig az első hiba megoldásával kezd, a többi már lehet annak az egynek az eredménye. Jelen esetben:

Can't locate loadable object for module DBI in @INC

Tehát nem találja a DBI modult, nem tudja betölteni. Felsorolta a hibaüzenetben, hogy hol kereste őket. Nézd meg, rendesen feltetted-e a csomagot, ha igen, akkor pedig tudasd a programoddal, hogy hol kell keresnie.
5

válasz

Anonymous · 2006. Május. 31. (Sze), 17.55
A DBI modul ott van, ahol lennie kell, mert meg is néztem mégegyszer, meg a pl. fájlok mennek terminálból (illetve az adatbáziskezelést hajtják végre rendesen) még ott is ahol a CGI nem megy böngészőből (illetve, ha csak a DBI-t beleteszem) (/var/www/cgi-bin/). Itt valami különleges hiba lehet, mert már mindennel próbálkoztam, meg azért nem vagyok annyira kezdő. Azért várom a további ötleteket is! Köszönöm.
6

Példa

pint3r · 2006. Május. 31. (Sze), 21.20
Ha beszúrsz egy példa forráskódot ami nem megy akkor megnézem az én rendszeremen mit produkál.

Gentoo Linux (2.6.12), Apache (2.0.55), Perl (5.8.7), MySQL (4.1.19), DBI (1.50), CGI (3.15)
7

talán

Anonymous · 2006. Május. 31. (Sze), 22.20
mert a httpd usernek csak a cgi-bin könyvtárhoz van joga, máshonnan nem fog tudni (jogosultság hiányában) include-ozni/futattni.
8

válasz

Anonymous · 2006. Jún. 1. (Cs), 00.09
Kedves Anonymous!

Csekély 2 soros tippednek köszönhetően megpróbáltam először csak a DBI.pm modulnak, majd az egész .../perl5/ könyvtárnak maximum (755) jogot adni, és ezútobbi bejött. Ez volt a probléma oka, ezentúl egy életre megjegyzem :). Csak most meg nehogy valaki feltörje a rendszert ennek köszönhetően, de majd maximum kihúzom a kábelt a gépből addig, amíg fejlesztek linux-ban. Köszönöm szépen a hasznos tippeket mindenkinek, persze legfőképp Anonymous-nak. Így már időre be tudom fejezni a beadandómat.