Thread Apache Fehlkonfiguration(cgi) (10 answers)
Opened by SirLant at 2003-08-19 17:38

Strat
 2003-08-19 19:43
#30672 #30672
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich hatte frueher haeufig dasselbe Problem, weil ich unter Win2k oder so entwickelte und das Zeug dann via ftp oder so auf eine Linux/Solaris-Kiste hochlud. Und da war ich stehts in Gefahr, das Aendern des Shebangs zu vergessen...

Dann habe ich in der httpd.conf folgende Option entdeckt:
Quote
# Apache parses all CGI scripts for the shebang line by default.
# This comment line, the first line of the script, consists of the symbols
# pound (#) and exclamation (!) followed by the path of the program that
# can execute this specific script.  For a perl script, with perl.exe in
# the C:\Program Files\Perl directory, the shebang line should be:

  #!c:/program files/perl/perl

# Note you _must_not_ indent the actual shebang line, and it must be the
# first line of the file.  Of course, CGI processing must be enabled by
# the appropriate ScriptAlias or Options ExecCGI directives for the files
# or directory in question.
#
# However, Apache on Windows allows either the Unix behavior above, or can
# use the Registry to match files by extention.  The command to execute
# a file of this type is retrieved from the registry by the same method as
# the Windows Explorer would use to handle double-clicking on a file.
# These script actions can be configured from the Windows Explorer View menu,
# 'Folder Options', and reviewing the 'File Types' tab.  Clicking the Edit
# button allows you to modify the Actions, of which Apache 1.3 attempts to
# perform the 'Open' Action, and failing that it will try the shebang line.
# This behavior is subject to change in Apache release 2.0.
#
# Each mechanism has it's own specific security weaknesses, from the means
# to run a program you didn't intend the website owner to invoke, and the
# best method is a matter of great debate.
#
# To enable the this Windows specific behavior (and therefore -disable- the
# equivilant Unix behavior), uncomment the following directive:
ScriptInterpreterSource registry


Und wenn Perl ordnungsgemaess einen Perl-Interpreter zugeordnet ist, funktioniert das auch wunderbar. Ob es zugeordnet ist, merkt man, wenn man versucht, das Script ohne den Perl-Aufruf vorher zu starten, z.B.
script.pl
script.cgi

wenn beide funktionieren, dann geht es so; falls nicht, kloppt man folgende kommandos in die cmd.exe:
Code: (dl )
1
2
3
assoc .pl=Perl
assoc .cgi=Perl
ftype Perl="E:\apps\gnu\Perl58\bin\perl.exe" "%1" %*

oder so (Der Pfad zu Perl muss natuerlich angepasst werden).
Diese vorgehensweise hat auch noch den Vorteil, dass man da mit den Endungen variieren kann, z.B. .pl8 fuer perl5.8, .pl6 fuer perl5.6, ... und parallel mehrere interpreter benutzen kann (auch mit cgi).

Denn dann kann ich #! /usr/bin/perl verwenden, und alle sind gluecklich ;-)\n\n

<!--EDIT|Strat|1061307906-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Apache Fehlkonfiguration(cgi)