Frank Schönmann: Perl und Apache unter Windows

Beitrag lesen

hi!

Ich möchte gern auf meinem Apache Server unter Windows CGI-Dateien
ausführen, ohne den Pfad in den Scripten in der ersten Zeile, auf
den Interpreter zu verweisen (#!perl).

Aus der httpd.conf:

=== cut ===

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

The directive above can be placed in individual <Directory> blocks or the

.htaccess file, with either the 'registry' (Windows behavior) or 'script'

(Unix behavior) option, and will override this server default option.

=== cut ===

Ich frage das, weil ich gern die Dateien so übernehmen will, wie
sie auch auf dem UNIX-Server meines Providers liegen (#!/usr/bin/perl)

Alternative: Perl nach C:\usr\ installieren.

bye, Frank!