Apache,PHP,Perl und die Rechte

  • Themenstarter Themenstarter Gelöschtes Mitglied 15619
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 15619

Guest
Hallo ich habe folgende Verständnisfrage. Mein Apache Webserver läuft unter dem User daemon.
Wie müssen die Rechte idealerweise gesetzt werden damit PHP und Perl Scripte über den Apache ausgeführt werden können. Perl und PHP sind als Module kompiliert und per LoadModule geladen.

z.B.

DocumentRoot: /home/domain1.de/

Rechte: 644

Das hieße doch der Apache kann als Rest der Welt auf das Verzeichniss lesen, reicht das auch aus um PHP-Scripte auszuführen oder müsste hier noch ein 645 gesetzt werden? Ein info.php muss ja auch nicht zwingend ein ausführbar Flag gesetzt haben, damit ich es ausühren kann. Habe das ebend mal getestet. Bei perl Scripten schaut es etwas anders aus, diese können doch eh nur im cgi-bin ausgeführt werden und diesen müssen auch zwingend ein ausführbar Flag für den Rest der Welt gesetzt haben?

Vielen Dank für etwas Aufklärung.
 
Perl und PHP sind 2 grundverschiedene Sachen. Perl-Skripte müssen prinzipiell ausführbar für den Webserver-User sein. PHP-Skripte müssen nur lesbar für den Webserver sein.
 
Hi Bitmuncher, und PHP Scripte welche auf der Bash ausgeführt werden müssen demnach auch nicht ausführbar sein?
 
Das kommt drauf an, wie du sie ausführst. Theoretisch müssen Perl-Skripte auf der Konsole auch nicht ausführbar sein, aber für den Webserver müssen sie es.

Also... PHP-Skripte werden vom Webserver immer durch einen Interpreter geparsed, da dieser als Handler für PHP-Dateien festgelegt wird. Perl-Skripte hingegen werden als CGIs gehandhabt. Sie werden direkt ausgeführt, als würdest du './skriptname' auf der Konsole aufrufen und es wird der Interpreter verwendet, der in der Shebang angegeben wird.

Daher:
Perl-Skripte für den Webserver immer ausführbar machen.
Wenn sie auf der Konsole genutzt werden, kann man sie mittels 'perl skriptname.pl' aufrufen ohne sie ausführbar zu machen. Will man sie mittels 'skriptname.pl' aufrufen (also nicht als Argument für den Interpreter), müssen sie ausführbar sein. PHP-Skripte müssen prinzipiell nicht ausführbar sein, da sie auch auf der Konsole üblicherweise mit 'php skriptname.php' aufruft. Will man sie direkt aufrufen, muss eine Shebang in die erste Zeile eingetragen werden (#!/usr/bin/php o.ä.) und man muss sie ausführbar machen.
 
Hi Bitmuncher, super erklärt vielen Dank, kannst du mir noch sagen ob in Default Apache Konfiguration perl Skripte direkt im DocumentRoot ausgeführt werden können. Das geht doch nur im cgi-bin Verzeichnis oder?
 
Ja, das geht nur im CGI-Verzeichnis. Du kannst aber, sofern du eine reine CGI-Seite verwendest einfach ExecCGI für das gewünschte Verzeichnis setzen.
 
Zurück
Oben