View previous topic :: View next topic |
Author |
Message |
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Tue Mar 08, 2011 2:18 pm Post subject: Apache und perl? |
|
|
Hallo Zusammen.
Wie kann ich denn den Apache dazu bewegen, dass er in cgi-bin perl Scripte ausführt.
Ich habe schon so einiges bei google gefunden, aber leider funktioniert das alles nicht.
Gibt es da irgendwo ein HowTo, das funktioniert? |
|
Back to top |
|
|
Yamakuzure Advocate
Joined: 21 Jun 2006 Posts: 2300 Location: Adendorf, Germany
|
Posted: Tue Mar 08, 2011 3:49 pm Post subject: |
|
|
Nö, aber den Apache2 unter Gentoo dazu zu bewegen perl-scripte auszuführen ist nicht einfach.
Achtung! die folgende liste erlaubt es .pl Dateien von überall auf dem Server auszuführen! Wenn es nur aus cgi-bin sein soll, dann darf "/etc/apache2/modules.d/75_mod_perl.conf" natürlich nicht so verändert werden wie unten.- www-apache/mod_perl hast du ja sicherlich installiert, gell?
/etc/conf.d/apache2 wrote: | APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP5 -D PERL" |
/etc/apache2/modules.d/00_mod_mime.conf wrote: | AddHandler cgi-script .cgi .pl |
/etc/apache2/modules.d/75_mod_perl.conf wrote: | #<Directory /home/*/public_html/perl>
# SetHandler perl-script
# PerlResponseHandler ModPerl::PerlRun
# Options -Indexes ExecCGI
# PerlOptions +ParseHeaders
#</Directory>
<Location *.pl>
SetHandler perl-script
PerlResponseHandler ModPerl::PerlRun
PerlOptions +ParseHeaders
</Location> |
/etc/apache2/vhosts.d/default_vhost.include wrote: | <Directory "/var/www/localhost/htdocs">
Options Indexes FollowSymLinks +ExecCGI
# Erlaube override, um ExecCGI auch abschalten zu können
AllowOverride All
# Development-Server! Kein zugriff von Außen!
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory> | damit sollte es klappen, tut's zumindest bei mir auf drei Rechnern. _________________ Edited 220,176 times by Yamakuzure |
|
Back to top |
|
|
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Tue Mar 08, 2011 4:34 pm Post subject: |
|
|
THX @ Yamakuzure,
1-3 hatte ich schon gemacht.
Habe dann noch 4 + 5 gemacht, aber leider funktioniert es immer noch nicht.
Wenn ich im Webbrowser die URL zur *.pl angebe, dann will er sie immer nur herunterladen, anstatt dass sie auf den Server ausgeführt wird. |
|
Back to top |
|
|
Yamakuzure Advocate
Joined: 21 Jun 2006 Posts: 2300 Location: Adendorf, Germany
|
Posted: Wed Mar 09, 2011 10:13 am Post subject: |
|
|
Das Einzige, was mir spontan dazu einfällt, ist ein Problem an dem ich kauen "durfte":
Deine Perl-Datei *muss* einen gültigen Content-Type zurückgeben, der kleinste Tippfehler bedeutet "Download".
Um zum Beispiel deine Umgebungsvariablen einzusehen, kannst du mal folgendes Skript testen:
Code: | #!/usr/bin/perl -w
use strict;
use CGI;
print CGI::header('text/plain'); ## <- WICHTIG
use Cwd;
print "getcwd : " . getcwd . "\n";
use Cwd 'abs_path';
print "abs_path: " . abs_path($0) . "\n";
print "-------------------------\n";
for my $k (sort keys %ENV)
{
print "$k : $ENV{$k}\n";
}
| Auf meinem System bekomme ich den folgenden Output: Code: | getcwd : /var/www/localhost/htdocs/ArLic
abs_path: /var/www/localhost/htdocs/ArLic/envTest.pl
-------------------------
DOCUMENT_ROOT : /var/www/localhost/htdocs
GATEWAY_INTERFACE : CGI/1.1
HTTP_ACCEPT : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_CHARSET : ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING : gzip,deflate
HTTP_ACCEPT_LANGUAGE : de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
HTTP_CONNECTION : keep-alive
HTTP_HOST : localhost
HTTP_KEEP_ALIVE : 115
HTTP_USER_AGENT : Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.15) Gecko/20110307 Gentoo Firefox/3.6.15
PATH : /lib64/rc/sbin:/lib64/rc/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/sys/bin:/home/sed/sys/bin
QUERY_STRING :
REMOTE_ADDR : 127.0.0.1
REMOTE_PORT : 49032
REQUEST_METHOD : GET
REQUEST_URI : /ArLic/envTest.pl
SCRIPT_FILENAME : /var/www/localhost/htdocs/ArLic/envTest.pl
SCRIPT_NAME : /ArLic/envTest.pl
SERVER_ADDR : 127.0.0.1
SERVER_ADMIN : root@localhost
SERVER_NAME : localhost
SERVER_PORT : 80
SERVER_PROTOCOL : HTTP/1.1
SERVER_SIGNATURE : <address>Apache Server at localhost Port 80</address>
SERVER_SOFTWARE : Apache
UNIQUE_ID : TXdQ-n8AAAEAAEHGBnQAAAAB |
Wenn das immernoch nicht hinhaut, was bekommst du von der Adresse "http://localhost/perl-status" ?
Ferner: Perl ist standardmäßig so konfiguriert, dass sich die Skripte in /perl bzw. /cgi-perl und *nicht* in /cgi-bin befinden. (Siehe /etc/apache2/modules.d/75_mod_perl.conf) _________________ Edited 220,176 times by Yamakuzure |
|
Back to top |
|
|
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
|
Back to top |
|
|
Yamakuzure Advocate
Joined: 21 Jun 2006 Posts: 2300 Location: Adendorf, Germany
|
Posted: Wed Mar 09, 2011 2:05 pm Post subject: |
|
|
Das ist komisch, denn das ist auch nichts Anderes als Oben steht... (Ob "Files" oder "Location" sollte egal sein...)
aaaber ich werde den Eintrag mit "Files" bei mir auch einbauen, denn das sieht mir sehr viel sauberer aus als meine Config.
Edith freut sich: Woohooo, das sieht doch viel angenehmer aus. Nach dem hinzufügen von -D PERL reicht bei mir die folgende Konfiguration nun aus: Code: | # egrep "^\s*[^# ]" /etc/apache2/modules.d/75_mod_perl.conf
<IfDefine PERL>
LoadModule perl_module modules/mod_perl.so
PerlRequire "/etc/apache2/modules.d/apache2-mod_perl-startup.pl"
PerlModule ModPerl::Registry
<Location /perl-status>
SetHandler perl-script
PerlResponseHandler Apache2::Status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
<Files ~ "\.pl$">
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
Options +ExecCGI
PerlSendHeader On
</Files>
</IfDefine> | (Keine .cgi Endung bei mir, und ich mag nicht auf perl-status verzichten )
Also dank deinem Thread habe ich gehörig was dazugelernt heute. Wenn man nämlich sowas nicht weiß, kann man sich nur "durchgoogeln", und da kommt dann auch echt viel Umständliches bei raus. (gentoo-wiki.info war mir bis eben auch neu. ) _________________ Edited 220,176 times by Yamakuzure |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|