Ich packe die php.ini bei mir immer ins Verzeichnis "private".
Dieses existiert im Template, der User kann darauf zugreifen und das Verzeichnis ist von ausserhalb nicht erreichbar.
Was will man mehr?
Bei mir gab es im Template, also im Verzeichnis
kein Verzeichnis "private". Komischerweise wurden auch Verzeichnisse, die ich manuell in das Template kopiert hatte,
nicht in tatsächlich neu angelegte Websites übernommen.
Ich habe inzwischen einen anderen Weg gefunden, das Problem (leidlich elegant) zu lösen: Ich kopiere über einen Plesk-Ereignishandler die gewünschten Dateien ins Zielverzeichnis.
Ist jemand an einem genaueren Howto interessiert? Schreibe sowieso gerade die Doku...
Eine Frage dazu hab ich noch:
Weiter oben wird ja die Datei php-cgi kopiert und dann ersetzt. Gibts eine Möglichkeit, dass nach PHP-Updates nicht jedesmal das Kopieren und Ersetzen wiederholt werden muss?
Ergänzung:
Ich habe in der vhost.conf der Domain folgendes angegeben, um den PHP-Wrapper (auf "/usr/bin/php-cgi-wrapper") zu ändern, den Apache aufruft. Ich dachte, so könne ich das PHP-Binary unter seinem ursprünglichen Namen benutzen und hätte keine Probleme bei einem Update.
Code:
<Directory /var/www/vhosts/test.meinedomain.de/httpdocs>
<IfModule mod_fcgid.c>
<Files ~ (\.fcgi)>
SetHandler fcgid-script
Options +FollowSymLinks +ExecCGI
</Files>
</IfModule>
<IfModule mod_fcgid.c>
<Files ~ (\.php)>
SetHandler fcgid-script
FCGIWrapper /usr/bin/php-cgi-wrapper .php
Options +ExecCGI
allow from all
</Files>
</IfModule>
Options -Includes -ExecCGI
</Directory>
Jetzt muss ich natürlich noch im Wrapper sagen, dass er das originale PHP aufrufen soll. Anschließend Plesk die Konfiguration neu einlesen lassen und sicherheitshalber den Apachen mal neu gestartet.
Leider bekomme ich beim Aufruf einer Seite nun einen "500 internal server error", und im Logfile von suexec /var/log/httpd/suexec_log folgende Meldungen:
Code:
[2009-11-06 17:13:16]: uid: (10002/test02) gid: (2523/2523) cmd: php-cgi-wrapper
[2009-11-06 17:13:16]: command not in docroot (/usr/bin/php-cgi-wrapper)
Inzwischen habe ich herausbekommen, woher die Fehlermeldung kommt: Der Pfad zu php-cgi und der Name "php-cgi" werden aus der Plesk-Konfigurationsdatei
gelesen.
Ein Ändern der passenden Direktive in der Datei in ein
Code:
CGI_PHP_BIN /usr/bin/php-cgi-wrapper
und ein anschließender Neustart von Plesk bestätigte meine Vermutung: Der "500 Internal Server Error" war sofort Vergangenheit!
Jetzt stellt sich die nächste Frage:
Habe ich jetzt den Teufel mit dem Beezlebub ausgetrieben, weil bei einem Plesk-Update /etc/psa/psa.conf wieder überschrieben wird?