Plesk php5 und eigener php.ini für jede Domain
Diese Howto stammt vom User Neutron aus dem Serversupportforum. http://serversupportforum.de/forum/faqs-anleitungen/18353-howto-debian-plesk-php4-5-cgi-mit-php-ini-pro-domain.html
Dieses Howto ist inspiriert von dem original Howto von "server4downs" welches hier http://serversupportforum.de/forum/faqs-anleitungen/4766-howto-php4-php5-als-cgi-gepatcht-deutsches-howto.html zu finden ist.
Man kann sagen das ist die Methode für faule bzw. Leute die nicht groß am System fummeln wollen.
1. Ins Plesk Control Panel gehen auf den "Updater" und "SiteBuilder and Sitebuilder module for Plesk" herunterladen.
Hintergrund: Dieser installiert das Plesk eigene php5-cgi binary mit.
2. suexec neu kompilieren wie in http://www.serversupportforum.de/forum/faqs-anleitungen/2602-mini-howto-suexec-neukompilieren.html
beschrieben, allerdings mit den Anpassungen suexec.h:
Code:
#ifndef AP_HTTPD_USER#define AP_HTTPD_USER "www-data"#endifCode:
#ifndef AP_LOG_EXEC#define AP_LOG_EXEC "/var/log/apache2/suexec.log" /* Need me? */#endifCode:
#ifndef AP_DOC_ROOT#define AP_DOC_ROOT "/var/www/vhosts"#endifbesonders die letzte Änderung hier bewirkt das wir hinterher das php Binary im Pfad der jeweiligen Domain "/var/www/vhosts/domain.tld/bin" ausführen können ohne dass das File dem FTP-Benutzer gehören muss und wir trotzdem immernoch eine eigene "php.ini" pro Domain verwenden können.
Änderungen an der suexec.c (von Freel@ncer14):
Code:
/* * Error out if the target name/group is different from * the name/group of the cwd or the program. */ if ((uid != dir_info.st_uid) || (gid != dir_info.st_gid) || (uid != prg_info.st_uid) || (gid != prg_info.st_gid)) { log_err("target uid/gid (%ld/%ld) mismatch " "with directory (%ld/%ld) or program (%ld/%ld)\n", uid, gid, dir_info.st_uid, dir_info.st_gid, prg_info.st_uid, prg_info.st_gid); exit(120); }ändern in:
Code:
/* * Error out if the target name/group is different from * the name/group of the cwd or the program. *//* Disabled if ((uid != dir_info.st_uid) || (gid != dir_info.st_gid) || (uid != prg_info.st_uid) || (gid != prg_info.st_gid)) { log_err("target uid/gid (%ld/%ld) mismatch " "with directory (%ld/%ld) or program (%ld/%ld)\n", uid, gid, dir_info.st_uid, dir_info.st_gid, prg_info.st_uid, prg_info.st_gid); exit(120); }*/Die nun neu kompilierte suexec in den entsprechenden Pfad kopieren und ein chmod 4755 darauf ausführen.
Den Pfad wo der Apache die suexec erwartet kann man mit "apache2 -V" erfahren.
3. Unter "/var/www/vhosts/domain.tld/conf/" oder "/var/www/vhosts/domain.tld/subdomain/name/conf" (falls Subdomain) eine vhost.conf mit folgendem Inhalt anlegen:
Zitat:
ScriptAlias /php5-cgi-custom /var/www/vhosts/domain.tld/bin Action application/x-httpd-php5-custom "/php5-cgi-custom/php5" AddType application/x-httpd-php5-custom .php |
Das php5 binary was Ihr braucht befindet sich in "opt/php52/bin" und heißt "php5-cgi". Nach obigem Beispiel der vhost.conf also:
Zitat:
cp /opt/php52/bin/php5-cgi /var/www/vhosts/domain/bin/php5 cd /var/www/vhosts/domain chown -R root.root bin/ chmod 755 bin/ |
Zitat:
cp /opt/php52/etc/php5/cgi/php.ini /var/www/vhosts/domain/bin cd /var/www/vhosts/domain/bin chown root.root php.ini chmod 644 php.ini |
Zitat:
/opt/psa/admin/sbin/websrvmng -a -v |
Die entsprechende php.ini für die CGI Version findet man unter "/opt/php52/etc/php5/cgi/" und kann diese gemäß seinen Vorstellungen anpassen.
Im Control Panel von Plesk sollte man schließlich noch php und cgi für die Domain aktivieren und schon läuft das ganze und zwar einfach ohne weiter etwas machen zu müssen, weder braucht man suexec noch php5 selbst kompilieren. Um das ganze wieder loszuwerden, also die Domain wieder unter php4 als mod laufen zu lassen einfach das jeweilige vhost.conf file löschen und nochmal
Zitat:
/opt/psa/admin/sbin/websrvmng -a -v |
Wer möchte kann natürlich auch in dem vhost.conf file einfach die Zeile
Zitat:
AddType application/x-httpd-php5-custom .php |
Zitat:
AddType application/x-httpd-php5-custom .php5 |
ändern und hat so den Effekt das alle php Dateien die mit .php5 enden mit der CGI Version ausgeführt werden, der rest mit php4 als mod.
Natürlich wird aufgrund der bereits vorhandenen SuExexUserGroup Direktive die Plesk ja anlegt (/var/www/vhosts/domain/conf/httpd.include) alles brav als der jeweils richtige Benutzer ausgeführt.
Im Endeffekt haben wir das gleiche was "server4downs" mit seinem Patch gemacht hat, allerdings wie ich finde auf einen etwas schnelleren weg, außerdem angepasst an Plesk ohne viel Aufwand. Zusätzlich können wir noch pro Domain eine php.ini benutzen (optional) was mit seiner Methode nicht möglich war, wobei das natürlich sicherlich realisierbar ist.
Im Anhang hier noch die angepasste suexec.h und suexec.c