Tutorials arrow Webseiten Tutorials arrow PHP Konfiguration: Einstellungen anpassen
TanMar
Tutorials
 
 
Navigation
Tutorials
Windows Tutorials
Linux Tutorials
Programme Tutorials
Webseiten Tutorials
Anbieterkennzeichnung
Ein Service von TanMar WebentwicklungTanMar Tutorials (aktiv)TanMar Surftipps
Zuletzt aktualisiert
Security News
heise Security News

PHP Konfiguration: Einstellungen anpassen

Drucken E-Mail

PHP Einstellungen anpassen Frei verfügbare auf PHP basierende Scripte aus dem Open Source Lager wie das Content Management System Mambo, das Shopsystem OsCommerce oder die Umfrage-Software OpenSurveyPilot setzen gewisse Einstellungen wie ein deaktivierter "Safe Mode" oder aktivierte "Register Globals" voraus, damit sie funktionieren bzw. mit dem vollen Funktionsumfang nutzbar sind. Besitzer eines Virtual Servers oder gar eines Root Servers können diese Einstellungen entweder global für den den ganzen Webserver oder separat für einzelne Accounts selbst vornehmen.

Verfügbare Einstellungen

Das deutsche PHP Handbuch bietet einen Überblick über die verfügbaren Optionen zur Konfiguration von PHP. Die aktuellen Einstellungen lassen sich leicht übersichtlich mit dem folgenden kurzen PHP-Script ausgeben:

<?
phpinfo();
?>

Im Browser aufgerufen sieht die Ausgabe des Scripts in etwa so aus:

Ein Ausschnitt aus der Ausgabe der Funktion phpinfo()

Konfiguration via php.ini, .htaccess oder httpd.conf

PHP-Einstellungen können global als serverweite Einstellung über die Datei php.ini vorgenommen werden, pro Virtual Host über die httpd.conf Datei bzw. eine eingebundene Konfigurationsdatei wie die vhost.conf Dateien von Plesk bzw. pro Verzeichnis über eine .htaccess Datei.
Nicht alle Einstellungen können jedoch überall vorgenommen werden. Manche Einstellungen lassen sich lediglich über die Datei php.ini bzw. die Definition des VHost definieren. Andere lassen sich für jedes Verzeichnis separat definieren und manche Einstellungen können überall vorgenommen werden:

Konstante Wert Bedeutung
PHP_INI_USER 1 Der Eintrag kann in Skripten von Benutzern oder der Windows Registry gesetzt werden
PHP_INI_PERDIR 2 Der Eintrag kann in php.ini, .htaccess oder httpd.conf gesetzt werden
PHP_INI_SYSTEM 4 Der Eintrag kann in php.ini oder httpd.conf gesetzt werden
PHP_INI_ALL 7 Der Eintrag kann überall gesetzt werden

Auf der offiziellen Seite von PHP findet sich hierfür eine Übersicht aller verfügbaren Einstellungen, deren Standardwerte sowie der möglichen Definitionsorte.

Einstellungen global ändern

Die grundlegenden Einstellungen für PHP werden über die Datei php.ini vorgenommen. Diese liegt in der Regel im Verzeichnis /etc und ist durch den Benutzer root mit einem beliebigen Texteditor editierbar. Sollte die Datei nicht in /etc liegen kann, hilft der Befehl locate php.ini bei der Suche. Einstellungen, die hier vorgenommen werden, gelten für alle auf dem Server befindlichen Accounts.

Der Aufbau der Datei ist einfach. Zeilen, die mit einem Semikolon beginnen sind Kommentare. Ansonsten entspricht die Notation dem Schema Option = Wert:

; Safe Mode
;
safe_mode = On

Um den Safe Mode für den kompletten Server zu deaktivieren muß also lediglich die Zeile oben in safe_mode = On geändert werden. Die Änderung wird jedoch erst aktiv, wenn PHP die Konfiguration neu einliest. Dies geschieht nur beim Start. Durch einen Reload von Apache kann PHP aber dazu bewegt werden, die Konfigurationsdatei neu einzulesen. Dies geschieht mit bei den meisten Linux-Distributionen dem folgenden Befehl:

/etc/init.d/apache reload

Einstellungen pro Account ändern

Server ohne Verwaltungssoftware

Die Konfiguration des Webservers Apache erfolgt über die Datei /etc/httpd/httpd.conf. Diese Datei kann durch den Benutzer root mit einem beliebigen Texteditor bearbeitet werden. Für jeden Account (in der Terminologie von Apache als "Virtual Server" bezeichnet) ein Eintrag der Form

<VirtualHost xxx.xxx.xxx.xxx:xx>
ServerName www.meinedomain.de
DocumentRoot /var/www/meinedomain/
User meinuser
Group meinegruppe
</VirtualHost>

Hier kann durch das Hinzufügen einer Zeile zwischen den Virtualhost-Direktiven eine Einstellung geändert werden. Ein Eintrag beginnt immer mit php_admin_value bzw. php_admin_flag gefolgt von der gewünschten Option und dem Wert. Die Direktive php_admin_flag dient dabei für Optionen wie z.B. safe_mode, die lediglich die Zustände On/Off kennen, und php_admin_value dient für Optionen, die tatsächlich einen Wert annehmen wie z.B. open_basedir:

php_admin_flag safe_mode off
php_admin_flag register_globals on
php_admin_value open_basedir /var/www/meinedomain/

Server mit Confixx als Verwaltungssoftware

Bei vielen Root-Servern ist das Programm Confixx zur Verwaltung des Servers installiert. Etwas versteckt im Administratoren-Bereich von Confixx findet sich im Menüpunkt Einstellungen die Option "httpd Spezial". Einstellungen für einen Account können über den Punkt "einen Kunden Ändern" geändert werden.

Zuerst muss der Kunde gewählt werden

Ist ein Kunde ausgewählt erscheint ein Eingabefeld:

Änderung der PHP-Einstellungen über httpd-Spezial

Hier kann pro Zeile eine Einstellung geändert werden. Ein Eintrag beginnt immer mit php_admin_value bzw. php_admin_flag gefolgt von der gewünschten Option und dem Wert. Die Direktive php_admin_flag dient dabei für Optionen wie z.B. safe_mode, die lediglich die Zustände On/Off kennen, und php_admin_value dient für Optionen, die tatsächlich einen Wert annehmen wie z.B. open_basedir:

php_admin_flag safe_mode off
php_admin_flag register_globals on

Mit den Optionen "für alle Domains des Kunden setzen" und "für alle Domains, die vom Kunden angelegt werden, setzen" wird sichergestellt, daß die Änderung für den gesamten Account wirksam werden.

Nachdem die Änderungen gespeichert sind, werden diese aber nicht sofort aktiv. Confixx schreibt die Konfiguration des Servers in regelmäßigen Abständen neu und lädt Apache neu, um die geänderten Einstellungen zu aktivieren. Je nach dem Abstand zwischen den Update Intervalle, die in Confixx eingestellt sind, kann es einige Zeit (in der Regel einige Minuten) dauern, bis die neuen Einstellungen wirklich aktiv sind.

Server mit Plesk als Verwaltungssoftware

Obwohl Plesk das Flaggschiff unter den Serververwaltungsprogrammen ist, bietet es im Gegensatz zu Confixx nicht die Möglichkeit, PHP-Einstellungen über die grafische Oberfläche zu ändern.

Plesk legt für jeden Account ein Verzeichnis nach dem Schema /home/httpd/vhosts/meinedomain.de an. Im diesem Verzeichnis legt Plesk widerum eine Reihe von Unterverzeichnissen an. Im Verzeichnis conf liegt die Datei httpd.include, über die der Virtual Host für den Account definiert wird. In diesem Verzeichnis kann zusätzlich über einen Texteditor eine Datei namens vhost.conf angelegt werden, die Direktiven zur Veränderung von PHP-Einstellungen enthalten kann:

php_admin_flag safe_mode off
php_admin_flag register_globals on

Damit die Datei von Plesk eingebunden wird ist zudem der Aufruf des folgenden Befehls notwendig:

/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=meinedomain.de

Die Angabe der Domain sollte dabei dem Domainnamen entsprechen, über den der Account in Plesk angelegt ist. Nach dem nächsten automatischen Neustart von Apache sollten die Änderungen aktiv werden. Dies kann einige Minuten in Anspruch nehmen. Alternativ kann in Plesk im Menü Server unter dem Punkt Dienste-Verwaltung über das Icon rechts aussen manuell ein Neustart von Apache angestossen werden:

Über das Menü Server -> Dienste Verwaltung kann ein manueller Neustart von Apache angestossen werden

Safe_Mode bei Plesk 8 einstellen

Seit der Version 8 bietet Plesk die Möglichkeit, die Einstellung Safe_Mode direkt aus der Administration von Plesk zu steuern. Die Option versteckt sich im Setup des Hostings:

Option für den PHP Safe_Mode

Über die Datei vhost.conf lässt sich der Safe_Mode dann nicht mehr steuern - alle anderen Optionen können nach wie vor mit der oben beschriebenen Methode beeinflussen.

Sonderfall open_basedir

Die Option open_basedir wird von Plesk bei jedem Account innerhalb der <directory> Direktive definiert uns lässt sich nicht analog zu den oben genannten Optionen überschreiben. Es ist deshalb notwendig die open_basedir Definition auch innerhalb der Datei vhost.conf in eine <directory> Direktive einzuschliessen:

<Directory /home/httpd/vhosts/xxx.de/httpdocs>
<IfModule sapi_apache2.c>
php_admin_value open_basedir "/home/httpd/vhosts/xxx.de/httpdocs:/tmp"
</IfModule>
</Directory>

Die Vorlage hierfür findet man in der Datei httpd.include innerhalb des conf Verzeichnisses des betreffenden Accounts. Diese übernimmt man idealerweise per Copy & Paste in die Datei vhost.conf und erweitert lediglich den Pfad der bereits vorhandenen open_basedir Definition. Die einzelnen Verzeichnisse auf die ein Script zugreifen darf werden dabei jeweils durch einen Doppelpunkt. Um also beispielsweise einer Applikation den Zugriff auf das Programmverzeichnis /usr/bin zu gewähren hängt man an die vorhandene Definition ein ":/usr/bin" an:

<Directory /home/httpd/vhosts/xxx.de/httpdocs>
<IfModule sapi_apache2.c>
php_admin_value open_basedir "/home/httpd/vhosts/xxx.de/httpdocs:/tmp:/usr/bin"
</IfModule>
</Directory>

Einstellungen via .htaccess Datei pro Verzeichnis vornehmen

Wenn auf einem Server die Optionen "AllowOverride Options" oder "AllowOverride All" gesetzt sind besteht die Möglichkeit PHP-Einstellungen des Typs PHP_INI_PERDIR bzw. PHP_INI_ALL über eine .htaccess Datei pro Verzeichnis zu steuern.
Zu diesen Einstellungen gehören beispielsweise die Optionen register_globals oder memory_limit.
Die Definition erfolgt über die Direktiven php_flag für Optionen die lediglich die Ausprägungen On/Off kennen bzw. php_flag für Optionen denen ein Wert zugewiesen wird.
Hier ein Beispiel für zwei derartige Definitionen:

php_flag register_globals On
php_value memory_limit 16M

Sollte es beim Versuch auf diesem Wege Einfluss auf PHP-Einstellungen zu nehmen zu einem „Internal Server Error“ kommen, so fehlen Ihnen die genannten AllowOverride Privilegien.

Trackback(0)
Kommentare (6)add comment

Peter Siepe said:

  Holla,
Nach ewigen Suchen hab ich dank dieser anleitung endlich den punkt in
confixx gefunden. und ich hab schon gedacht, die php.ini währe kaputt.



Vielen dank

Peter Siepe
12.04.2008 | url

RP said:

  Hallo,
wie führe ich den Befehl

"/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=meinedomain.de"

aus?
02.04.2008

Sternchen said:

  Halli Hallo an Euch alle ..

Ich habe tierische Probleme beim Installieren von Php.
Wenn man die Php sachen auf den Server läd .. muss man ja irgendwie servername .. passwort und etc. eingeben .. bis zu diesem Fenster komme ich aber wenn ich die Daten eingebe die ich für richtig halte dann kommt irgendwie nichts weiter .. kann mir da vielleicht jemand helfen ?? Ich verzweifel bald ..

Ich danke für jede Antwort ..

Sternchen
08.01.2008

baba said:

  smilies/cheesy.gif

Vielen Dank! einfach nur gut - und hat mir sozusagen den "arsch" gerettet smilies/smiley.gif
08.12.2007 | url

Downlord said:

 
Die Definition erfolgt über die Direktiven php_flag für Optionen die lediglich die Ausprägungen On/Off kennen bzw. php_flag für Optionen denen ein Wert zugewiesen wird.


07.11.2007

markus said:

  hallo, vielen dank fuer die super anleitung, mir ist allerdings noch unklar welche passage genau aus der httpd.include datei in die vhost.conf übernommen werden muessen, nur von
01.11.2007 | url

Kommentar schreiben
quote
bold
italicize
underline
strike
url
image
quote
quote
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley

security image
Bitte den folgenden Code eintragen


busy
 

computer

Die beliebteste Webseite
© Copyright 2005 TanMar Web-Entwicklung - Berlin. Alle Rechte Vorbehalten.
Kontakt | Links | Photoshop Tutorials | Partner
ALL-INKL.COM Webhosting
Social Bookmarking
Bookmark bei: Mr. Wong Bookmark bei: Oneview Bookmark bei: Linkarena Bookmark bei: Favoriten Bookmark bei: Seekxl Bookmark bei: Power Oldie Bookmark bei: Bookmarks.cc Bookmark bei: Linksilo Bookmark bei: Yigg Bookmark bei: Del.icio.us Bookmark bei: Netscape Bookmark bei: Yahoo Bookmark bei: Google Bookmark bei: Technorati Bookmark bei: Reddit Bookmark bei: StumbleUpon Bookmark bei: Digg Bookmark bei: Folkd