# open_basedir & session.save_path Problem



## Tekagi (25. Apr. 2010)

Hallo liebe Community,
ich habe leider 2 Probleme:
Ich habe ispconfig3 und bis auf PHP funktioniert alles perfekt.

Sofern ich FCGI,CGI,mod_php verwende bekomm ich eine restriction wegen open_basedir, die ich nicht ganz nachfolziehen kann.

```
[Sun Apr 25 12:46:45 2010] [error] [client 91.57.000.000] PHP Warning:  require(): open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/clients/client2/web2/web:/var/www/clients/client2/web2/tmp:/var/www/hlstatsx1.xxx.net/web:/srv/www/hlstatsx1.xxx.net/web:/usr/share/php5:/tmp:/usr/share/phpmyadmin) in /var/www/clients/client2/web2/web/hlstats.php on line 40
[Sun Apr 25 12:46:45 2010] [error] [client 91.57.000.000] PHP Fatal error:  Can't load config.php, open_basedir restriction. in /var/www/clients/client2/web2/web/hlstats.php on line 40
```
Und zwar versuche ich HLstatsx zum laufen zu bekommen.
die Datei hlstats.php versicht via require() die config.php einzubinden. Diese leigt im selben Verzeichnis wie die hlstats.php (/var/www/clients/client2/web2/web; /var/www/hlstatsx1.xxx.net/web (link))

Aber auch bei einzelnen PHP-Dateien kommt es zu diesem error


```
[Sun Apr 25 14:11:31 2010] [error] [client 91.57.000.000] PHP Warning:  Unknown: open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/clients/client0/web3/web:/var/www/clients/client0/web3/tmp:/var/www/signatur.xxx.net/web:/srv/www/signatur.xxx.net/web:/usr/share/php5:/tmp:/usr/share/phpmyadmin) in Unknown on line 0
[Sun Apr 25 14:11:31 2010] [error] [client 91.57.000.000] PHP Fatal error:  Can't load /var/www/xxx.net/web/view.php, open_basedir restriction. in Unknown on line 0
```
Aber sind die Dateien nicht innerhalb der "allowed paths" ?
So wie ich das sehe schon.


2. Problem:
Wenn ich suPHP nutze, liegt der session.save_path auf /var/lib/php/session und des gibt einen Zugriffsfehler.
Kann man nicht für jeden Client den session path auf sein Verzeichnis (/var/www/client0/web1/tmp) setzen? php_admin_value ist ja bei suphp nicht möglich,
sonst könnte man es ja in die vhosts-master-config schreiben.
Oder gibt es keine bedenken den chmod von /var/lib/php/session auf 777 zu setzen wie es einige im Internet raten?

EDIT: OS ist Fedora 12 SELinux disabled

Ich hoffe ihr könnt mir helfen.

Schönen Sonntag noch


----------



## Till (25. Apr. 2010)

Zu 1) Sieht nach eime Fehler im include_path der php.ini aus. Schau mal bitte in die php.ini die für cgi dateien da ist, der Include path sollte in etwa so aussehen:

include_path = ".:/usr/share/php"

wichtig ist das .: am Anfang, sonst kann er keine Dateien mit einem relativen Pfad includen.

zu 2:

chmod 777 /var/lib/php/session


----------



## Tekagi (25. Apr. 2010)

Zitat von Till:


> Zu 1) Sieht nach eime Fehler im include_path der php.ini aus. Schau mal bitte in die php.ini die für cgi dateien da ist, der Include path sollte in etwa so aussehen:
> 
> include_path = ".:/usr/share/php"


Ich habe nur 1 php.ini (/etc/php.ini).
Der include_path war auskommentiert.
Hab ich jetzt gesetzt, funktoniert aber immer noch nicht ->selber Fehler

Edit:
Aber include_path ist doch nur für Sachen die eingebunden werden oder?
Weil der Fehler (open_basedir restriction) tritt ja schon auf, wenn nur ein 
	
	



```
<?php phpinfo(); ?>
```
 in der aufzurufenden Datei steht.


----------



## Till (25. Apr. 2010)

Hast Du auch den apache neu gestartet?

Poste bitte mal die Ausgabe von:

ls -la /var/www/clients/client2/web2/web/


----------



## Tekagi (25. Apr. 2010)

Apache schon mehrere Male neugestartet.

Ausgabe wie folgt:


```
drwx--x---.  9 web2 client2  4096 25. Apr 11:53 .
drwxr-x--x.  6 web2 client2  4096 25. Apr 11:42 ..
-rw-r--r--.  1 web2 client2  1036 25. Apr 11:45 autocomplete.php
-rw-r--r--.  1 web2 client2  3781 25. Apr 11:52 config.php
drwxr-xr-x.  2 web2 client2  4096 25. Apr 11:45 css
drwxr-xr-x.  2 web2 client2  4096 25. Apr 11:42 error
-rw-r--r--.  1 web2 client2  1406 25. Apr 11:45 favicon.ico
-rw-r--r--.  1 web2 client2  1309 25. Apr 11:45 hlstats.css
drwxr-xr-x. 12 web2 client2  4096 25. Apr 11:46 hlstatsimg
-rw-r--r--.  1 web2 client2  5947 25. Apr 11:45 hlstats.php
drwxr-xr-x.  3 web2 client2  4096 25. Apr 11:49 includes
-rw-r--r--.  1 web2 client2    40 25. Apr 11:45 index.php
-rw-r--r--.  1 web2 client2  4048 25. Apr 11:45 ingame.php
drwxr-xr-x.  5 web2 client2  4096 25. Apr 11:49 pages
-rw-r--r--.  1 web2 client2 21131 25. Apr 11:49 show_graph.php
-rw-r--r--.  1 web2 client2 16137 25. Apr 11:49 sig.php
drwxr-xr-x.  2 root root     4096 25. Apr 11:42 stats
-rw-r--r--.  1 web2 client2 19625 25. Apr 11:49 status.php
drwxr-xr-x.  3 web2 client2  4096 25. Apr 11:49 styles
```
stats sind vom webalizer

Bei suPHP geht es, denn open_basedir ist nicht gesetzt.
Ist dies bei einem virtuellen Hosting überhaupt "sicher"?


----------



## Till (26. Apr. 2010)

Zitat von Tekagi:


> Aber include_path ist doch nur für Sachen die eingebunden werden oder?
> Weil der Fehler (open_basedir restriction) tritt ja schon auf, wenn nur ein
> 
> 
> ...


Das kann an sich nicht sein, da es sich bei Openbasedir immer um das includen von externen Dateien geht. Wenn Du das schon bei einer simplen phpinfo datei hast, dann ist vielleicht dochselinux nicht ganz deaktiviert.

1) Wiederhole bitte nochnal die Schritte zum deaktivieren von selinux aus dem Tutorial.
2) prüfe nochmal, ob der open_basdir path und der dateipfad stimmen, also dass der dateipfad wirklich innerhalb des openBasedir Pfades liegt.
3) Poste bitte mal Zeile nr. 40 der Datei  /var/www/clients/client2/web2/web/hlstats.php


----------



## planet_fox (26. Apr. 2010)

@Till den Ordner gibts nicht 



> chmod 777 /var/lib/php/session


Der Ordner sollte unter Debian so heißen 


```
chmod 777 /var/lib/php5/session
```
es kommt auf die php version an und die Distribution daher ist Tills antwort nicht unbedingt falsch. Ich gehe hier jetzt von einem Debian aus unter Redhat oder Suse kann es diesen Ordner möglicherweise geben


----------



## Tekagi (26. Apr. 2010)

Zitat von Till:


> 1) Wiederhole bitte nochnal die Schritte zum deaktivieren von selinux aus dem Tutorial.
> 2) prüfe nochmal, ob der open_basdir path und der dateipfad stimmen, also dass der dateipfad wirklich innerhalb des openBasedir Pfades liegt.
> 3) Poste bitte mal Zeile nr. 40 der Datei  /var/www/clients/client2/web2/web/hlstats.php


1.
selinux ist deaktiviert.
auch schon neugestartet

2.
liegt im openbasedir

3.

```
require('config.php');
```
Ich habe auf meinem Laptop nun Fedora 12 installiert (vorher Windoof), und da funktioniert alles ohne Probleme, nur halt auf meinem Test-Server nicht! Ich hab sogar schon alle Konfig-Files syncronisiert.
Ich möchte jetzt nicht alles auf das Produktivsystem machen, und dann funktioniert es nicht, daher teste ich eigentlich auch immer.

@planet_fox
Ich verwende Fedora 12 wie im ersten Post beschrieben .
Also stimmt schon was Till sagt .


----------



## Till (26. Apr. 2010)

Dazu fällt mir im Moment auch nichts weiter ein.


----------

