Toon posts:

[debian] cgi internal server error, commandline werkt wel

Pagina: 1
Acties:

Verwijderd

Topicstarter
Heb het volgende script in de directory
code:
1
/home/joris/public_html/cgi-bin/

gezet:

code:
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl

use CGI;

my $page = new CGI;

print "Hello, World!";

exit;


en ook

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl -w
use diagnostics;
use CGI::Carp qw(fatalsToBrowser);
                  BEGIN
                  {
                  use CGI::Carp qw(carpout);
                  }
     # Tell perl to send a html header.
     # So your browser gets the output
     # rather then <stdout>(command line
     # on the server.)
print "Content-type: text/html\n\n";

     # print your basic html tags.
     # and the content of them.
print "<html><head><title>Hello World!! </title></head>\n";
print "<body><h1>Hello world</h1></body></html>\n";


als ik de scripts uitvoer met ./test.pl en ./test3.pl, dan geven ze gewoon de uitvoer uit de print-commando's

Als ik naar:
code:
1
2
3
http://..../~joris/cgi-bin/test.pl
of
http://..../~joris/cgi-bin/test3.pl

ga, dan krijg ik een internal server error.

Volgens mij ligt het dus aan httpd.conf, daar staat het volgende mbt cgi in:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
LoadModule cgi_module /usr/lib/apache/1.3/mod_cgi.so

<Directory />
AllowOverride AuthConfig
Options Indexes FollowSymLinks ExecCGI
</Directory>

<Directory /home/*/public_html>
    AllowOverride All
    Options MultiViews Indexes SymLinksIfOwnerMatch ExecCGI
    <Limit GET POST OPTIONS PROPFIND>
        Order allow,deny
        Allow from all
    </Limit>
    <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
        Order deny,allow
        Deny from all
    </Limit>
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory /usr/lib/cgi-bin/>
    AllowOverride All
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>

AddHandler cgi-script .cgi .sh .pl

<IfModule mod_perl.c>
  Alias /perl/ /var/www/perl/
  <Location /perl>
    SetHandler perl-script
    PerlHandler Apache::Registry
    Options +ExecCGI
  </Location>
</IfModule>


De eigenaar van de directory en de bestanden is joris.
De directory /home/joris/public_html/cgi-bin/ heeft de rechten 777 en de files test.pl en test3.pl ook.

Misschien kan iemand me nog helpen, wat er eventueel fout in mijn httpd.conf zit.

[ Voor 8% gewijzigd door Verwijderd op 28-06-2006 11:45 ]


  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Een internal server error hoort gewoon een foutmelding te schrijven in /var/log/apache/error.log

Staat daar wat in? :)

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 06-01 23:13

DeMoN

Pastafari

eamelink schreef op woensdag 28 juni 2006 @ 12:01:
Een internal server error hoort gewoon een foutmelding te schrijven in /var/log/apache/error.log

Staat daar wat in? :)
Ja precies.

En om te testen of die scripts genoeg rechten hebben kan je jezelf ook www-data (de user waaronder apache meestal draaiende is) user maken.

code:
1
su - www-data


En dan:

code:
1
whoami


Je zal zien dat je nu even die user bent. Nu kun je testen of de scripts nog steeds uit te voeren zijn vanaf de cli en dus zien of de rechten goed staan :)

ctrl + D om weer uit te loggen naar als wie je ervoor ingelogged was :)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


Verwijderd

Topicstarter
De user www-data kan de script uitvoeren, dus de rechten staan goed. Verder kan ik in de error-log de volgende regel vinden, die volgens mij hiermee te maken heeft:

code:
1
2
3
4
[Wed Jun 28 13:33:50 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test.pl
[Wed Jun 28 13:33:53 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test3.pl
[Wed Jun 28 13:33:55 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test.pl
[Wed Jun 28 13:33:58 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test3.pl


Zal even verder zoeken of ik hier iets over kan vinden. in ieder geval tot nu toe al bedankt.
Als jullie weten hoe ik dit moet oplossen, dan hoor ik het graag, als ik het zelf heb gevonden horen jullie het ook.


Edit: Lijkt dus aan de eerste regel van het script te liggen, wat ik kon vinden. De scripts staan bovenaan, heb voor de zekerheid nog een keertje gekeken waar perl stond, maar dat lijkt toch goed te zijn.

code:
1
2
stoop:/var/log/apache# which perl
/usr/bin/perl

[ Voor 14% gewijzigd door Verwijderd op 28-06-2006 12:34 ]


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 06-01 23:13

DeMoN

Pastafari

Verwijderd schreef op woensdag 28 juni 2006 @ 12:26:
De user www-data kan de script uitvoeren, dus de rechten staan goed. Verder kan ik in de error-log de volgende regel vinden, die volgens mij hiermee te maken heeft:

code:
1
2
3
4
[Wed Jun 28 13:33:50 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test.pl
[Wed Jun 28 13:33:53 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test3.pl
[Wed Jun 28 13:33:55 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test.pl
[Wed Jun 28 13:33:58 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test3.pl


Zal even verder zoeken of ik hier iets over kan vinden. in ieder geval tot nu toe al bedankt.
Als jullie weten hoe ik dit moet oplossen, dan hoor ik het graag, als ik het zelf heb gevonden horen jullie het ook.


Edit: Lijkt dus aan de eerste regel van het script te liggen, wat ik kon vinden. De scripts staan bovenaan, heb voor de zekerheid nog een keertje gekeken waar perl stond, maar dat lijkt toch goed te zijn.

code:
1
2
stoop:/var/log/apache# which perl
/usr/bin/perl
Probeer het eens zonder -w en probeer het ook eens zo:
#!/usr/bin/env perl

"Premature end of script headers" staat doorgaans gewoon voor 'een' error ergens in je script dus het kan van alles zijn maar aangezien hij vanaf de cli wel gewoon werkt kan het idd aan de bovenste regel (shebang) liggen omdat als die niet klopt apache helemaal niet weet WAT (welke taal) hij eigenlijk moet gaan uitvoeren :)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
[Wed Jun 28 14:05:38 2006] [error] [client 84.26.215.15] File does not exist: /home/fotoalbum/public_html/favicon.ico
[Wed Jun 28 14:05:38 2006] [error] [client 84.26.215.15] script not found or unable to stat: /usr/lib/cgi-bin/missing_handler.pl
[Wed Jun 28 14:05:40 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test.pl
[Wed Jun 28 14:05:41 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test.pl
[Wed Jun 28 14:05:41 2006] [error] [client 84.26.215.15] File does not exist: /home/fotoalbum/public_html/favicon.ico
[Wed Jun 28 14:05:41 2006] [error] [client 84.26.215.15] script not found or unable to stat: /usr/lib/cgi-bin/missing_handler.pl
[Wed Jun 28 14:05:42 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test.pl
[Wed Jun 28 14:05:42 2006] [error] [client 84.26.215.15] File does not exist: /home/fotoalbum/public_html/favicon.ico
[Wed Jun 28 14:05:42 2006] [error] [client 84.26.215.15] script not found or unable to stat: /usr/lib/cgi-bin/missing_handler.pl
[Wed Jun 28 14:05:45 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test3.pl
[Wed Jun 28 14:05:51 2006] [error] [client 84.26.215.15] Premature end of script headers: /home/joris/public_html/cgi-bin/test3.pl
[Wed Jun 28 14:05:51 2006] [error] [client 84.26.215.15] File does not exist: /home/fotoalbum/public_html/favicon.ico
[Wed Jun 28 14:05:51 2006] [error] [client 84.26.215.15] script not found or unable to stat: /usr/lib/cgi-bin/missing_handler.pl


Laatste stukje van errorlog. Nog steeds internal server error, bij de wijzigingen.

Die regel over die missing_handler.pl, weet niet of die er iets mee te maken heeft.

[ Voor 3% gewijzigd door Verwijderd op 28-06-2006 12:57 ]


Verwijderd

Topicstarter
Heb een # gezet in de httpd.conf, zodat hij niet meer zoekt naar de missing_handler.pl, maar dan heb je nog steeds die 2 andere foutmeldingen.

Vraag me af, hij telkens die foutmelding van dat favicon.ico geeft?
/home/fotoalbum/public_html/ is wel de documentroot van de domeinnaam.


Iemand een idee, hoe ik cgi werkend kan krijgen. DE permissies zitten goed, heb de script command-line met www-data uitgevoerd, en dat werkt.

  • _JGC_
  • Registratie: Juli 2000
  • Nu online
Let je er wel op dat /cgi-bin/ een algehele scriptalias is voor /usr/lib/cgi-bin ? Zolang je hier zelf geen alias/scriptalias op zet, gaat /usr/lib/cgi-bin voor.

Verwijderd

Topicstarter
AddHandler cgi-script .cgi .sh .pl

Daardoor kan je toch overal cgi-scripts uitvoeren.

En verder als ik naar http://....../cgi-bin/ ga, krijg ik:

Forbidden
You don't have permission to access /cgi-bin/ on this server.

Dan ga ik dus naar /usr/lib/cgi-bin/

Die directory staat wel op 755, alleen daar kan apache niet bij denk ik. Zal eens proberen een andere directory daar neer te zetten.

code:
1
[Thu Jun 29 13:58:23 2006] [error] [client 84.26.215.15] attempt to invoke directory as script: /usr/lib/cgi-bin

[ Voor 15% gewijzigd door Verwijderd op 29-06-2006 12:49 ]


  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 05-02 22:16

DizzyWeb

Ondertiteld

Je kan /cgi-bin/ niet zomaar aanroepen, je zal minstens een script IN cgi-bin moeten aanroepen.

Verwijderd

Topicstarter
Klopt, moet een script aanroepen.

Ook als ik de scriptalias verander in /home/fotoalbum/public_html/cgi-bin/ krijg ik de melding van 403 forbidden.

error-log:
code:
1
[Thu Jun 29 14:09:35 2006] [error] [client 84.26.215.15] attempt to invoke directory as script: /home/fotoalbum/public_html/cgi-bin


Maar als ik script aanroep met : http://..../cgi-bin/test.pl, dan doet ie het wel, mooi!!!!

Maar waarom kan ik nu niet overal cgi-scripts uitvoeren, zoals in /home/joris/public_html/cgi-bin/

Dacht dat dat wel moest kunnen met die

AddHandler cgi-script .cgi .sh .pl

[ Voor 12% gewijzigd door Verwijderd op 29-06-2006 13:02 . Reden: post nog niet gezien ]


  • igmar
  • Registratie: April 2000
  • Laatst online: 31-01 23:50

igmar

ISO20022

Ik stel voor dat je de relevante stukken uit de Apache documentatie eens gaat lezen, vooral over de directives die met het uitvoeren van cgi-bin scripts te maken hebben (Options, AddHandler).
Pagina: 1