cybnet.ch
clever & useful internet solutions

PHP Tricks und Hilfe

Weitere Ticks:  Internet Explorer IE7 und IE8 tricks

 

Um PHP5 sicher und voll funktionsfähig in einer shared Host Umgebung integrieren zu können, macht es Sinn PHP als CGI in den Webserver (z.B. Apache) einzubinden. Vorteile dabei sind unter anderem dass der PHP Interpreter mit dem jeweiligen Benutzeraccount des Kunden ausgeführt wird und somit bereits auf der Betriebsystem Ebene nur auf die Verzeichnisse und Dateien zugriffen kann welcher zum Kunden-Benutzeraccount gehören oder explizit freigegeben wurden.

Die Integration von PHP mit mod_php welche dann mittels PHP eigenen Safe-Mode geschützt wird, führte immer wieder zu Problemen bei diversen OpenSource PHP Projekten.

PHP über CGI hat den Nachteil das der PHP Interpreter nicht direkt auf die Apache Umgebung zugreifen kann und somit nicht alle Informationen erhält die mit PHP verarbeitet werden könnten. Mit einigen Kniffs lassen sich aber die meisten Einschränkungen umgehen.

Individuelle Konfiguration der PHP.INI

Sollte die Standard PHP Konfiguration für Ihre PHP Skripte nicht geeignet sein lassen sich gewünschte Konfigurations-Direktiven ganz einfach für jedes Verzeichnis anpassen. Erstellen Sie eine php.ini Datei im Verzeichnis in welchem Ihr PHP-Skript liegt und ändern Sie die gewünschten Direktiven welche Ihr Skript benötigt.

 

register_globals

Ein Beispiel: In der PHP Standard-Konfiguration ist die Direktive register_globals deaktiviert bzw. auf off gestellt. Sollte Ihr PHP Skript nun aber die Funktionalität von register_globals benötigen so erstellen Sie einfach eine php.ini-Datei im selben Verzeichnis und fügen register_globals=on ein.

php.ini:

 register_globals = on

 

X-Powered-By im HTTP Header deaktivieren

Der PHP Interpreter setzt in der Standard-Konfiguration eine X-Powered-By: PHP/ Zeile im HTTP Header. Dies kann in gewissen Web-Projekten störend sein und die Sicherheit beeinträchtigen. Der PHP Interpreter lässt sich jedoch mit der expose_php Direktive dazu anweisen, diese Header Zeile nicht zu schreiben. Erstellen Sie wie folgt eine php.ini Datei den den Webverzeichnissen welche dieser Header nicht gezeigt werden soll:

php.ini:

 expose_php = off

 

Error Reporting

Die Entwicklung von PHP Skripten läuft meistens direkt auf dem Webserver ab. Auf produktiven Webservern ist jedoch das Error Reporting bzw. Display auf ein minimum reduziert und macht daher das Suchen nach Fehlern (debugging) schwierig. Mit der error_reporting und display_errors Direktive lassen sich Fehlermeldung anzeigen. Erstellen Sie hierzu eine php.ini-Datei im Verzeichnis des PHP Skriptes und fügen Sie folgende Zeilen ein:

php.ini:

 error_reporting = E_ALL
 display_errors = On
 display_startup_errors = On

 

Die maximale Grösses eines Uploads

Die Standard-Konfiguration von PHP lässt einen Datei-Upload von max. 2MB zu. Dies ist für manche PHP Projekte zu wenig. Mittels der upload_max_filesize und post_max_size Direktiven lässt sich diese Limite erhöhen:

php.ini:

 upload_max_filesize = 16M
 post_max_size = 16M

 

Die maximale Ausführungszeit von PHP Skripte

Normalerweise wird eine maximale Ausführungszeit von 30 Sekunden gewährt. Dass heisst innerhalb von 30 Sekunden muss ein PHP interpretiert und kompett ausgeführt sein. Um diese Zeit zu verlängern setzten Sie folgende Direktive:

php.ini:

 max_execution_time = 60    ; in Sekunden

 

$_SERVER['PHP_AUTH_USER'] und $_SERVER['PHP_AUTH_USER'] fehlen

Leider stehen diese Umgebungsvariablen bei einer PHP-CGI Integration nicht zur Verfügung. Sie können jedoch einfach mittels Apaches mod_rewrite Modul zugänglich gemacht werden. Legen Sie hierzu einfach eine .htaccess-Datei in Ihrem Webroot-Verzeichnis an und fügen Sie folgende Anweisung ein:

 

.htaccess:

 RewriteEngine on
 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]