Problem open_basedir restriction (Suse 10.1/Plesk 8.1)

floydzed

New Member
Hallo Server Support Forum,

nutze den V-Server Suse 10.1/Plesk 8.1 und habe folgendes Problem.

Habe unter Plesk 2 Kunden/Domains angelegt
kanzlei-zumpf.de
wetzlar-online.de

Habe dann Contenido(CMS) unter der "default" Domain (h1305545.stratoserver.net) einwandfrei installieren können.
(Wichtig, weil der Zugang keiner Domain Zugewiesen sein soll)

Zugang und Login funktionieren einwandfrei.

Habe dann im Contenido einen Mandanten angelegt (kanzlei-zumpf.de) und ohne Probleme die Navigation eingegeben.
Soweit alles in Ordnung.

Nun traten aber beim Einrichten der ersten Seite im Backend Probleme auf:

----------- Ausgabe Contenido Backend
Warning: include_once() [function.include-once]: open_basedir restriction in effect. File(/srv/www/vhosts/kanzlei-zumpf.de/httpdocs/cms/config.php) is not within the allowed path(s): (/srv/www/vhosts/default/htdocs:/tmp) in /srv/www/vhosts/default/htdocs/contenido-4.6.15/contenido/external/backendedit/front_content.php on line 62
usw. (siehe Forum-Link)
----------- end

Im Frontend (www.kanzlei-zumpf.de/cms) wird zumindest der Header bis zum <body> angezeigt (Quelltext).

Anfrage an das Contenido-Forum habe ich gestellt:
Contenido :: Thema anzeigen - Problem Contenido mit Plesk 8.1 / Suse 10.1

Mögliche Lösung aus dem Forum:
/srv/www/vhosts/kanzlei-zumpf.de
in open_basedir aufnehmen...

OK !

Habe darauf hin folgendes geändert:

1. Erstellung der Datei vhost.conf (/srv/vhosts/kanzlei-zumpf.de/conf):

------------ vhost.conf
<Directory /srv/www/vhosts/kanzlei-zumpf.de/httpdocs>
<IfModule sapi_apache2.c>
php_admin_flag engine on
php_admin_flag safe_mode off
php_admin_value open_basedir "/srv/www/vhosts/kanzlei-zumpf.de/httpdocs:/tmp"
</IfModule>
<IfModule mod_php5.c>
php_admin_flag engine on
php_admin_flag safe_mode off
php_admin_value open_basedir "/srv/www/vhosts/kanzlei-zumpf.de/httpdocs:/tmp"
</IfModule>
Options +Includes +ExecCGI
</Directory>
------------ end

2. Include in die Datei httpd.include eingetragen (/srv/vhosts/kanzlei-zumpf.de/conf)

------------ Auszug httpd.include
<VirtualHost 81.169.128.139:80>
ServerName kanzlei-zumpf.de:80
ServerAlias Kanzlei für Musik- und Medienrecht
UseCanonicalName Off
SuexecUserGroup ftp-mz-01 psacln
ServerAdmin "[email protected]"
DocumentRoot /srv/www/vhosts/kanzlei-zumpf.de/httpdocs
CustomLog /srv/www/vhosts/kanzlei-zumpf.de/statistics/logs/access_log plesklog
ErrorLog /srv/www/vhosts/kanzlei-zumpf.de/statistics/logs/error_log
Include /srv/www/vhosts/kanzlei-zumpf.de/conf/vhost.conf
------------ end

3. Apache über Plesk neu gestartet !


Leider hat meine Änderung keinerlei Effekt gezeigt !


Nun meine Fragen:
-----------------

1. Wird mein Include nicht übernommen ?
2. Ist es richtig, dass wenn der Include funktioniert hat die Einträge (vhost.conf) in die "httpd.include" übernommen werden?
3. Wie kann ich weiter vorgehen um meine Fehlermeldung zu eliminieren?
4. Wäre ein Serverneustart zu empfehlen ?


Vielen Dank für Eure Unterstützung !
 
Last edited by a moderator:
Warning: include_once() [function.include-once]: open_basedir restriction in effect. File(/srv/www/vhosts/kanzlei-zumpf.de/httpdocs/cms/config.php) is not within the allowed path(s): (/srv/www/vhosts/default/htdocs:/tmp) in /srv/www/vhosts/default/htdocs/contenido-4.6.15/contenido/external/backendedit/front_content.php on line 62
Du lieferst nur diesen einen Fehler, daher kann ich auch nur den interpretieren:
Hier wird die Datei front_content.php in default/htdocs aufgerufen. Du befindest Dich also im Backend.
Diese Datei versucht die config.php in kanzlei-zumpf.de/httpdocs einzubinden.
Und genau das verhindert die openbasedir-Restriction.

Lösung:
Du muß im "default" die openbasedir-Restriction mit kanzlei-zumpf.de/httpdocs erweitern.

Evtl. muß dies genauso in die andere Richtung passieren. Du brauchst in der vhost.conf aber nicht alle Angaben wiederholen. Es reicht ein Directory, evtl. die ifModule-Abfrage und der neue php_admin_value.

Und bearbeite die httpd.include niemals mit der Hand. Nutze dazu die Macht von Plesk:
huschi.net - Wie ändere ich Apache-Direktiven für eine Domain mit Plesk?

huschi.
 
Vielen Dank für Deine schnelle Antwort, Huschi

Mir geht ein Licht auf.
Das muß es sein. Werde ich Probieren.
Deinen Link zum bearbeiten der httpd.include hatte ich sogar schon durchgeführt...

Frage:
Gibt es eine Möglichkeit die (falschen) Einträge rückgängig zu machen oder ist die Datei so OK?

( Eintrag Include /srv/www/vhosts/kanzlei-zumpf.de/conf/vhost.conf
und zusätzlich
der Inhalt der vhost.conf in der datei )

Code:
 ATTENTION!
# DO NOT MODIFY THIS FILE OR ANY PART OF IT. THIS CAN RESULT IN IMPROPER PLESK
# FUNCTIONING OR FAILURE, CAUSE DAMAGE AND LOSS OF DATA. IF YOU REQUIRE CUSTOM
# MODIFICATIONS TO BE APPLIED TO THE CONFIGURATION, PLEASE, PERFORM THEM IN THE
# FOLLOWING FILE(S):
# /srv/www/vhosts/kanzlei-zumpf.de/conf/vhost.conf
# /srv/www/vhosts/kanzlei-zumpf.de/subdomains/<subdomain-name>/conf/vhost.conf

<VirtualHost 81.169.128.139:80>
        ServerName   kanzlei-zumpf.de:80
        ServerAlias  www.kanzlei-zumpf.de
        UseCanonicalName Off
        SuexecUserGroup         ftp-mz-01 psacln
        ServerAdmin  "[email protected]"
        DocumentRoot /srv/www/vhosts/kanzlei-zumpf.de/httpdocs
        CustomLog  /srv/www/vhosts/kanzlei-zumpf.de/statistics/logs/access_log plesklog
        ErrorLog   /srv/www/vhosts/kanzlei-zumpf.de/statistics/logs/error_log
        Include /srv/www/vhosts/kanzlei-zumpf.de/conf/vhost.conf
<IfModule mod_userdir.c>
        UserDir /srv/www/vhosts/kanzlei-zumpf.de/web_users
</IfModule>
        ScriptAlias  /cgi-bin/ /srv/www/vhosts/kanzlei-zumpf.de/cgi-bin/
        Alias  /plesk-stat /srv/www/vhosts/kanzlei-zumpf.de/statistics/
        <Location  /plesk-stat/>
                Options +Indexes
        </Location>
        <Location  /plesk-stat/logs/>
                Require valid-user
        </Location>
        Alias  /webstat /srv/www/vhosts/kanzlei-zumpf.de/statistics/webstat
        Alias  /webstat-ssl /srv/www/vhosts/kanzlei-zumpf.de/statistics/webstat-ssl
        Alias  /ftpstat /srv/www/vhosts/kanzlei-zumpf.de/statistics/ftpstat
        Alias  /anon_ftpstat /srv/www/vhosts/kanzlei-zumpf.de/statistics/anon_ftpstat
        Alias  /awstats-icon /usr/share/apache2/icons/awstats
        <IfModule mod_ssl.c>
                SSLEngine off
        </IfModule>
        <Directory /srv/www/vhosts/kanzlei-zumpf.de/httpdocs>
        <IfModule sapi_apache2.c>
                php_admin_flag engine on
                php_admin_flag safe_mode off
                php_admin_value open_basedir "/srv/www/vhosts/kanzlei-zumpf.de/httpdocs:/tmp"
        </IfModule>
        <IfModule mod_php5.c>
                php_admin_flag engine on
                php_admin_flag safe_mode off
                php_admin_value open_basedir "/srv/www/vhosts/kanzlei-zumpf.de/httpdocs:/tmp"
        </IfModule>
                Options +Includes +ExecCGI
        </Directory>
        <Directory /srv/www/vhosts/kanzlei-zumpf.de/web_users>
        <IfModule sapi_apache2.c>
                php_admin_flag engine off
        </IfModule>
        <IfModule mod_php5.c>
                php_admin_flag engine off
        </IfModule>
        </Directory>
        <Directory "/srv/www/vhosts/kanzlei-zumpf.de/statistics">
                AuthType Basic
                AuthName "Domain-Statistiken"
                AuthUserFile /srv/www/vhosts/kanzlei-zumpf.de/pd/d..httpdocs@plesk-stat
                require  valid-user
        </Directory>
</VirtualHost>


Du lieferst nur diesen einen Fehler, daher kann ich auch nur den interpretieren:

Hatte die Komplette Fehlerlste im Contenido-Forum-Link schon stehen.
Sorry, wenn das so nicht üblich ist.

Hier ist die restliche Liste:
Code:
Warning: include_once(/srv/www/vhosts/kanzlei-zumpf.de/httpdocs/cms/config.php) [function.include-once]: failed to open stream: Operation not permitted in /srv/www/vhosts/default/htdocs/contenido-4.6.15/contenido/external/backendedit/front_content.php on line 62 

Warning: include_once() [function.include]: Failed opening '/srv/www/vhosts/kanzlei-zumpf.de/httpdocs/cms/config.php' for inclusion (include_path='.:.:/usr/share/php5:/usr/share/php5/PEAR') in /srv/www/vhosts/default/htdocs/contenido-4.6.15/contenido/external/backendedit/front_content.php on line 62 

Warning: chdir() [function.chdir]: open_basedir restriction in effect. File(/srv/www/vhosts/kanzlei-zumpf.de/httpdocs/cms/) is not within the allowed path(s): (/srv/www/vhosts/default/htdocs:/tmp) in /srv/www/vhosts/default/htdocs/contenido-4.6.15/contenido/external/backendedit/front_content.php on line 63 

Warning: chdir() [function.chdir]: open_basedir restriction in effect. File(/srv/www/vhosts/kanzlei-zumpf.de/httpdocs/cms/) is not within the allowed path(s): (/srv/www/vhosts/default/htdocs:/tmp) in /srv/www/vhosts/default/htdocs/contenido-4.6.15/contenido/includes/include.con_editcontent.php on line 618
 
Gibt es eine Möglichkeit die (falschen) Einträge rückgängig zu machen oder ist die Datei so OK?
Du kannst Plesk zwingen die ganze Konfiguration neu zu schreiben. (siehe Link von oben.)

der Inhalt der vhost.conf in der datei
Das ist aber nicht die vhost.conf sondern die httpd.include.

Hatte die Komplette Fehlerlste im Contenido-Forum-Link schon stehen.
Nein, das ist nicht der Punkt!
Was ich meinte ist, daß Du zwei Probleme geschildert hast: Einmal mit dem Backend und einmal mit dem Frontend.
Aber nur eine Fehlermeldung geliefert hast. :)

huschi.
 
Du kannst Plesk zwingen die ganze Konfiguration neu zu schreiben. (siehe Link von oben.)

Mir war nicht klar, daß man die datei so neu schreiben lassen kann.
Ich dachte nur an ein hinzufügen.

Das ist aber nicht die vhost.conf sondern die httpd.include.

Richtig!
Mir erschien es seltsam, daß der "Include vhost.conf Befehl" und der Inhalt der Datei "vhost.conf" gleichzeitig in der Datei vorhanden waren.

Ich denke nach einem "Konfiguration neu schreiben" wird dieses Problem
behoben sein.

Also, nochmals vielen Dank Huschi !
 
Soweit hab ich es jetzt auch hinbekommen.

Was ich mich nur frage:

Wie kann ich plesk dazu bewegen, für neu angelegte Subdomains automatisch eine vhost.conf zu nutzen.

Ich möchte z.B. das jede Subdomain (var/www/vhosts/test.de/subdomains/subtest/httpdocs) auch auf das Haupt-Verzeichnis (var/www/vhosts/test.de/httpdocs) der Domain zugreifen kann.
 
Gestern habe ich endlich Deine Vorschläge in die Tat umgesetzt, Huschi.

Was habe ich gemacht:

1. die Datei vhost.conf wie folgt erweitert:
php_admin_value open_basedir "/srv/www/vhosts/kanzlei-zumpf.de/httpdocs:/svr/www/vhosts/default/htdocs/:/tmp"
Habe also das Contenido Verzeichnis (default) noch angehängt und gespeichert.

2. Befehl "/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=kanzlei-zumpf.de" durchgeführt.

3. Befehl "/etc/init.d/apache2 reload" durchgeführt

Aber leider: Keinerlei änderung des Problems.


Nach Kontrolle der Datei httpd.include fiel mir folgendes auf:

In der Datei stehen weiterhin die gleichen Daten ohne Änderung
Am Ende steht eine Includeanweisung zur vhost.conf

Ist das richtig, das der Inhalt in beiden Dateien vorhanden ist (<Directory>)
Ich dachte die Datei httpd.include wird neu geschrieben?!


Wollte jetzt von der anderen Seite auch eine Erweiterung durchführen.
Leider existiert dort gar kein "conf" Verzeichnis?!
Wo kann ich also dort die Änderung durchführen?

Ich hoffe Du kannst mir helfen :confused:
 
Last edited by a moderator:
Aber leider: Keinerlei änderung des Problems.
Heißt was?
Z.B. wäre ein sinnvoll mal einen Blick auf phpinfo() zu werfen.

Am Ende steht eine Includeanweisung zur vhost.conf
Ja, genau so und nicht anders soll es sein.

Ist das richtig, das der Inhalt in beiden Dateien vorhanden ist (<Directory>)
Das kann ich Dir erst sagen, wenn Du den aktuellen Inhalt der vhost.conf preis gibst.

Leider existiert dort gar kein "conf" Verzeichnis?!
Wo existiert kein conf-Verzeichnis?

huschi.
 
Heißt was?
Z.B. wäre ein sinnvoll mal einen Blick auf phpinfo() zu werfen.

War auf mein Contenido-Problem bezogen: "gleiche Fehlermeldungen".
Worauf muß ich achten? / Kann ich Dir ohne Probleme den Link posten ?


Das kann ich Dir erst sagen, wenn Du den aktuellen Inhalt der vhost.conf preis gibst.

Code:
<Directory /srv/www/vhosts/kanzlei-zumpf.de/httpdocs>
        <IfModule sapi_apache2.c>
                php_admin_flag engine on
                php_admin_flag safe_mode off
                php_admin_value open_basedir "/srv/www/vhosts/kanzlei-zumpf.de/httpdocs:/svr/www/vhosts/default/htdocs:/tmp"
        </IfModule>
        <IfModule mod_php5.c>
                php_admin_flag engine on
                php_admin_flag safe_mode off
                php_admin_value open_basedir "/srv/www/vhosts/kanzlei-zumpf.de/httpdocs:/svr/www/vhosts/default/htdocs:/tmp"
        </IfModule>
                Options +Includes +ExecCGI
</Directory>

Wird denn der Inhalt der httpd.include durch den "include" der vhost.conf einfach überschrieben? Dachte erst, bei Neuerstellung werden die alten Einträge (httpd.include) nicht wieder geschrieben.


Wo existiert kein conf-Verzeichnis?

Im "default" Verzeichnis (/srv/www/vhosts/default/htdocs).
Im Verzeichnis, wo auch das Contenido installiert ist.

Habe dann Contenido(CMS) unter der "default" Domain (h1305545.stratoserver.net) einwandfrei installieren können.
(Wichtig, weil der Zugang keiner Domain Zugewiesen sein soll)

floydzed
 
Kann ich Dir ohne Probleme den Link posten ?
Ja, in einer phpinfo stehen nun wirklich keine wesentlichen Geheimnisse.

Das ist doch ein eindeutiger Hinweis darauf, daß man das default-Verzeichnis dafür gar nicht nutzen sollte, oder?

huschi.
 
MOD: Full-Quote entfernt!
Hier der Link : phpinfo()

Gibt es eine Möglichkeit das Problem zu lösen ohne eine Domain zu bestellen?
Normalerweise sollte man doch den Standard-Pfad erweitern können, nur wo?

is not within the allowed path(s): (/srv/www/vhosts/default/htdocs:/tmp)

Kann es ein Sicherheitsproblem geben, auch wenn ich den "Domainbesitzern" vertraue?

floydzed
 
Last edited by a moderator:
Hier der Link : phpinfo()
Funktioniert Dein Frontend denn nun?
Denn laut o.g. Link kommen keine Fehlermeldungen sondern nur eine leere Seite.

Gibt es eine Möglichkeit das Problem zu lösen ohne eine Domain zu bestellen?
Hast Du keine 4 EUR im Jahr für eine DE-Domain übrig?
Es kann ja auch eine Subdomain sein. Das ist Plesk ja egal.

Normalerweise sollte man doch den Standard-Pfad erweitern können, nur wo?
/etc/apache2/httpd.include
Dort findest Du die Einstellungen für den Default.
Es kann aber sein, daß Plesk diese Datei ggf. neu schreibt. Dann sind Deine Änderungen darin weg.

Kann es ein Sicherheitsproblem geben
Definiere in diesem Fall "Sicherheitsproblem".
Die meisten Probleme mit der Sicherheit kommen von PHP-Skripten.

huschi.
 
Funktioniert Dein Frontend denn nun?

Mein "Backend" hat Fehlermeldungen ausgeschmissen -> siehe erster Post.


Hast Du keine 4 EUR im Jahr für eine DE-Domain übrig?
Es kann ja auch eine Subdomain sein. Das ist Plesk ja egal.

Mit Subdomains wird es ja noch komplizierter.
Solange ich nicht sicher gehen kann das alles, was ich will funzt, möchte ich vorerst keine weitere Kosten verursachen. Es ist noch gar nicht klar, ob ich den Server für längere Zeit behalten kann.

/etc/apache2/httpd.include
Dort findest Du die Einstellungen für den Default. Es kann aber sein, daß Plesk diese Datei ggf. neu schreibt. Dann sind Deine Änderungen darin weg

Kann ich denn Plesk die Änderungen nicht unterschieben?
(Plesk also mit meinen Änderungen scheibt)


Definiere in diesem Fall "Sicherheitsproblem".
Die meisten Probleme mit der Sicherheit kommen von PHP-Skripten.

Kann Contenido im "default" zum Problem werden?
Wenn nicht, würde ich es gerne dort belassen.

floydzed
 
Mein "Backend" hat Fehlermeldungen ausgeschmissen -> siehe erster Post.
Nein, Deine Behauptung war, daß die Änderungen in der vhost.conf nicht funktionieren würden. Die sind aber - wie weiter oben erklärt - für das Frontend.
Für das Backend mußt Du dies logischerweise zusätzlich genau anders rum machen, was aber das Problem verursacht, daß es zum Default keine vhost.conf gibt.

Mit Subdomains wird es ja noch komplizierter.
Nö, Du mußt ja nicht eine Subdomain in Plesk anlegen sondern eine Subdomain als Plesk-Domain.

Kann ich denn Plesk die Änderungen nicht unterschieben?
Wenn es so wäre würdest Du auf huschi.net ein Howto dazu finden.

Kann Contenido im "default" zum Problem werden?
Ja, siehe Dein Problem damit. :)

huschi.
 
/etc/apache2/httpd.include
Dort findest Du die Einstellungen für den Default. Es kann aber sein, daß Plesk diese Datei ggf. neu schreibt. Dann sind Deine Änderungen darin weg

sorry, würde das gerne erst mal über "default" versuchen.
Wenns dann nicht klappt werde ich wohl das Contenido unter eine neue Domain legen.
Muß ich dann aber trotzdem jede neue Domain für Contenido dort eintragen ?

Ich finde leider keine Datei "/etc/apache2/httpd.include"
Habe jetzt in den Dateien default-server.conf und httpd.conf nach dem Abschnitt "/srv/www/vhosts/default/htdocs:/tmp" suchen lassen.
Konnte leider nix finden.

Hast Du noch eine Idee ?

Nö, Du mußt ja nicht eine Subdomain in Plesk anlegen sondern eine Subdomain als Plesk-Domain.
Kannst Du mir erklären wie Du das meinst ?!


floydzed
 
Last edited by a moderator:
Dann schau doch in der httpd.conf nach, welche Datei dort für Plesk eingebunden wird.
Steht meistens ganz unten am Ende.

huschi.
 
Auszug "httpd.conf"

### 'Main' server configuration

Include /etc/apache2/default-server.conf
Include /etc/apache2/sysconfig.d/include.conf


### Virtual server configuration

Include /etc/apache2/vhosts.d/*.conf

An welcher Datei sind denn Änderungen vorzunehmen ?
Wie schon oben erwähnt, ich finde die Pfadanweisung (siehe unten) zur Erweiterung in keiner der Dateien.

is not within the allowed path(s): ( /srv/www/vhosts/default/htdocs :/tmp)

floydzed
 
Last edited by a moderator:
Hallo Huschi,

habe ich Dich irgenwie verärgert oder hast Du auch keine Idee mehr ?

Bitte um kurze Info...


Gruß floydzed
 
Ich hatte Dir den std. der Plesk-Default-Einstellungen genannt.
Wenn es auf Deinem System anders ist, kann ich auch nichts dafür.
Also mußt Du selber sehen wo es abgeblieben ist.

Was erwartest Du von mir? Das ich einen Blick in meine Kristallkugel werfe und Dir die exakte Datei nenne?
Alternativ könntest Du einfach mal mit find und grep danach suchen.

huschi.
 
Back
Top