Plesk php5 und eigener php.ini für jede Domain

~ 0 min
2008-12-22 01:19

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"#endif
Code:
#ifndef AP_LOG_EXEC#define AP_LOG_EXEC "/var/log/apache2/suexec.log" /* Need me? */#endif
Code:
#ifndef AP_DOC_ROOT#define AP_DOC_ROOT "/var/www/vhosts"#endif
besonders 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
Wobei "domain.tld" natürlich zu ersetzen ist mit euren Daten. Ich habe mir wie man oben sieht unter "/var/www/vhosts/domain.tld/bin" die php5 binary abgelegt.

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/
Wer noch eine php.ini Datei "pro User" verwenden möchte, kopiert in den gleichen Pfad noch die entsprechende php.ini:

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
Damit das ganze nun greift, wie üblich bei Plesk einmal:

Zitat:
/opt/psa/admin/sbin/websrvmng -a -v
ausführen und die vhost.conf wird für die jeweilige Domain mit verwendet.

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
ausführen.


Wer möchte kann natürlich auch in dem vhost.conf file einfach die Zeile

Zitat:
AddType application/x-httpd-php5-custom .php
in

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

http://faq.webmasterhilfe.de/attachments/suexec.tar.gz

Durchschnittliche Bewertung 0 (0 Abstimmungen)

Es ist möglich, diese FAQ zu kommentieren.