Fastcgi und open_basedir in plesk - vhost.conf bringt nichts

PeterOG

New Member
Guten Abend.

Ich habe das Problem, dass der websvrmngr von PLESK mir nur bei php als apache handler eine open_basedir einstellung zulässt.

Php Info zeigt mir als basedir immer no value an egal was ich anstelle wenn ich probiere das open_basedir direkt in der php.ini von fcgi zu setzen erhalte ich immer den Fehler "No input file specified" oder so ähnlich auch wenn ich die domain in das basedir mit integriere... Wenn das Script keine Rechte hat in den htdocs ausgeführt zu werden wundert mich der Fehler ja auch nicht wirklich aber selbst eine Einstellung direkt in der httpd.include die von Plesk ja eh wieder zurückgesetzt wird noch eine vhost.conf bringt eine Änderung....

Die Vhost.conf wird auch angenommen und verarbeitet wenn ich mit dem websvrmngr die domains neu konfiguriere sieht man auch an dem Datum der httpd.include und wenn die vhost.conf n Fehler hat meckert er auch und startet den Apachen nicht. Aber die open_basedir value übernimmt er einfach nicht egal was ich anstelle.... Bin ja wirklich schon kurz davor plesk runterzuschmeißen aber bringt halt ne menge für leute die keine Ahnung von Servern haben aber trotzdem ne E-Mail anlegen wollen etc. Ansich schon eine große Zeitersparniss falls man nicht dauernd probleme damit hätte :D

Kennt jemand den Bug hat jemand eine Idee wieso das nicht funktioniert?
Hab Suse und PHP 5.2.13 with Suhosin-Patch 0.9.7 (cli) (built: May 7 2010 08:41:40) oder bin ich wirklich nur zu doof die Direktiven korrekt zu schreiben? :D

meine vhost.cof
(domain.tld = platzhalter :D)
Code:
<Directory /srv/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir "/srv/www/vhosts/domain.tld/httpdocs"
</Directory>

und in der httpd.include habe ich es auch probiert bei der richtigen domain ohne ssl hinter <ifmodule mod_fcgid.c>

es passiert aber nichts immer "no value"
Wäre wirklich nett wenn mir jemand n Tip gibt wie ich ein Lösungsweg finden könnte ohne PHP neu zu kompilieren bzw. was ich vllt falsch gemacht haben könnte

MFG Peter
 
Hast Du mal geschaut, welche php.ini bei Dir überhaupt geladen wird?
Und ob die open_basedir-Einstellung übernommen wird?

Am einfachsten kannst Du das testen, indem Du z.B. eine Datei info.php auf den betreffenden Webspace legst und diese dann mittels Browser aufrufst.
In der info.php muss folgendes stehen:
Code:
<?php
     phpinfo();
?>
 
Das habe ich schon gemacht. In der phpinfo wird mir als Einstellung no value angezeigt. Die php.ini hatte ich verändert aber wenn ich die änder erhalte ich als Fehler "No input file specified" auf allen Seiten.

Und die httpd.include die im /conf Verzeichnis der Domain liegt wird von websvrmngr von Plesk nur bei PHP als Apache Handler mit open_basedir Einstellung erzeugt. Sobald ich auf Cgi oder Fastcgi umstelle lässt Plesk die Einstellung einfach weg und reagiert nicht auf meine Versuche in der httpd.include die Einstelluing selbst zu setzen und die vhost.conf wird zwar verarbeitet aber die open_basedir Einstellungen werden auch ignoriert ...
 
Die php.ini hatte ich verändert aber wenn ich die änder erhalte ich als Fehler "No input file specified" auf allen Seiten.
Dann hast du einen Syntaxfehler eingebaut, so dass sich der PHP-Interpreter verabschiedet. Was hast du denn genau verändert?

Sobald ich auf Cgi oder Fastcgi umstelle lässt Plesk die Einstellung einfach weg und reagiert nicht auf meine Versuche in der httpd.include die Einstelluing selbst zu setzen und die vhost.conf wird zwar verarbeitet aber die open_basedir Einstellungen werden auch ignoriert ...
Natürlich, und wenn du kurz überlegst, wird dir auch klar, dass PHP die Apache-Konfiguration nur auslesen kann, wenn es im gleichen Prozess – also als Apache-Modul – läuft. Bei FastCGI ist der PHP-Prozess völlig unabhängig vom Webserver.
 
Also, ich würde open_basedir-Einstellungen in der php.ini setzen und nirgendwo anders.
Wird denn überhaupt die php.ini eingelesen, an der Du etwas geändert hast? (Sieht man auch auf der phpinfo()-Seite! Mach doch mal einen Screenshot und stell den hier ein!)

Es könnte nämlich sein, dass Du zwar in der httpd.include und der vhost.conf irgendwelche Einstellungen setzt, diese aber von der php.ini wieder überschrieben werden.
Hast Du den Apache nach jeder Änderung der Konfiguration neu gestartet?

Aber um hier nicht weiter rumraten zu müssen, wären weitere Infos (s.o.) von Dir nötig. :)
 
Dann hast du einen Syntaxfehler eingebaut
Oha ja hab /srw/www.... statt /srv geschrieben.
Hätte aber auch sein können, dass ich die httpdocs vergessen habe als basedir zu setzen dann kommt der Fehler auch weil das Script ja keine Rechte hat ;)

Aber in der php.ini direkt ist es ein bisschen doof einzustellen weil es ja mehrere Domains sind und ich müsste dann jedes mal wenn eine neue Domain angelegt wird die php.ini ergänzen.

Also der websvrmngr von Plesk nimmt die php.ini und ein paar andere Dateien und baut dann automatisch eine httpd.include bei Apache als Handler macht er auch alles richtig.

Standard Einstellung ist glaube ich dass Plesk das Basedir auf /srv/www/vhosts/domain.tld/httpdocs:/tmp setzt die Einstellung wird aber nur bei Apache als Handler mitgegeben und nicht bei Cgi oder Fastcgi.
Und manuelle Einstellungen werden ignoriert.
Egal ob in httpd.include oder in vhost.conf.
Die vhost.conf wird in der httpd.include eingebunden und wenn ich in der vhost.conf die Directory direktive z.b. falsch schreibe meckert der websvrmngr auch beim neukonfigurieren also er nimmt die Datei aber ignoriert jegliche Einstellung :(

Man müsste wissen wie der websvrmngr von Plesk arbeitet und schauen warum er einmal die Einstellung setzt und einmal nicht und besonders woher den Wert für das open_basedir nimmt der steht in keiner php.ini den erzeugt Plesk irgendwie
 
Aber in der php.ini direkt ist es ein bisschen doof einzustellen weil es ja mehrere Domains sind und ich müsste dann jedes mal wenn eine neue Domain angelegt wird die php.ini ergänzen.

Nicht, wenn man sein Plesk wie hier beschrieben konfiguriert:
Du hast dann für jeden vHost eine eigene php.ini, in der Du die Einstellungen ganz nach Lust und Laune ändern kannst. :)
 
:D
OH MAN :D
Also ich denke ich weiß warum es nicht funktioniert...
PHP also MOD läuft ja auch die vhost.conf wird dann angenommen.

Aber Fastcgi kann man wohl nichts einstellen und das ist wohl auch richtig so??
siehe anderen post
Und die open_basedir Einstellung wird von fcgid sowieso ignoriert. Kann zwar in der php.ini ein open_basedir setzten aber die Session kann auch außerhalb des Basedir gespeichert werden wenn der fcgid user rechte für das jeweilige Verzeichnis hat also session save_path nicht im basedir geht trotzdem... (laut phpinfo)

also open_basedir in Fcgid = quatsch oder nicht?
 
also open_basedir in Fcgid = quatsch oder nicht?

Ja!
Du hast nämlich im FastCGI-Modus für jeden Virtual Host einen anderen Benutzer unter dem PHP läuft, und daher sollten die Benutzer schon von den vergebenen Rechten her nur in "ihre" Verzeichnisse schreiben dürfen.
open_basedir halte ich da für entbehrlich.
 
Aber Fastcgi kann man wohl nichts einstellen und das ist wohl auch richtig so??
Ist ja nicht so, dass dies noch nicht erwähnt wurde

Und die open_basedir Einstellung wird von fcgid sowieso ignoriert.
Nein, wird sie nicht. mod_fcgid weiß nicht, dass da ein PHP-Interpreter läuft. Wie soll es also eine PHP-spezifische Einstellung ignorieren?

also open_basedir in Fcgid = quatsch oder nicht?
Nein, es ist nur nicht so essentiell wichtig, die Einstellung open_basedir korrekt zu setzen, wenn die Dateisystemberechtigungen schon sinnvoll sind. Für zusätzliche Einschränkungen ist die Einstellung aber auch beim Einsatz mit SuExec oder SuPHP sinnvoll.
 
Back
Top