CGI-DBI használatakor Internal Server Error hibát dob az Apache
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:Mi lehet a probléma?
Kérem aki jártas ebben a témában, az segítsen! Köszönöm!
■ 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>
Kérem aki jártas ebben a témában, az segítsen! Köszönöm!
Az a hiba...
Nem feltétlen
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. ;)
válasz
Az error.log-ban peig a következőt írta:
[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???
Nem találja a DBI-t
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.
válasz
Példa
Gentoo Linux (2.6.12), Apache (2.0.55), Perl (5.8.7), MySQL (4.1.19), DBI (1.50), CGI (3.15)
talán
válasz
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.