We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

open_basedir restriction


Nachttier
31.01.11, 10:29
Nachdem dieses Problem an diesem WE auch auf einer Produktivmaschine aufgetreten ist, habe ich dann den Verursacher identifiziert.

eaccelarator kollidiert hie rmit open_basedir. Wenn man bei der Konfiguration vom eaccelarator die Option "–without-eaccelerator-use-inode" setzt. funktioniert das ganze wieder...

Siehe http://eaccelerator.net/ticket/414

whyte
06.01.11, 20:19
Trotzdem dürfte er mit der Meldung die PHP nicht ausführen.

mach mal spasseshalber in der Apache Conf den letzten Slash weg:

Code:
php_admin_value open_basedir /var/www/vhosts/lg38.de/httpdocs:/tmp
Ich glaube, ich hatte auch mal sowas ...

Nachttier
06.01.11, 17:20
Noch ein Gedanke:

Es ist natürlich nur eine Warnung. Das heisst Error Level geändert und man kann die Seite verwenden.

Die Ursache wüsste ich aber schon gerne!

Nachttier
06.01.11, 16:50
Danke fürs mitdenken!

Ja, das hatte ich auch schon geprüft, habe es aber nicht so klar geschrieben.

An den require wird

/var/www/vhosts/lg38.de/httpdocs/concrete/startup/tools_upgrade_check.php

übergeben.

whyte
06.01.11, 15:21
schonmal in einer PHP Testdatei an der selben Stelle, wo das script liegt, den befehl dirname(__FILE__) ausführen lassen ?
nachher steht da nix drin, dann würde er nämlich in der Root anfangen und die Fehlermeldung wäre berechtigt.
Ist zumindest ein Anfang.

Oder besser noch:
Code:
$datei = dirname(__FILE__).'/startup/tools_upgrade_check.php';  
echo $datei;
require($datei);
dann sieht man den Pfad komplett.

Nachttier
06.01.11, 12:10
Seit einem unbekannten Zeitpunkt erhalte ich (Centos 5/Plesk 10/PHP 5.2.16/CMS Concrete5)

Warning: require() [function.require]: open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/vhosts/lg38.de/httpdocs/:/tmp/) in /var/www/vhosts/lg38.de/httpdocs/concrete/dispatcher.php on line 117
Zeile 117 verwendet:

PHP-Code:
require(dirname(__FILE__).'/startup/tools_upgrade_check.php'); 
dirname(__FILE__) entspricht /var/www/vhosts/lg38.de/httpdocs/concrete

open_basedir wird laut phpinfo bestätigt: /var/www/vhosts/lg38.de/httpdocs/

Entsprechend der verwendeten /var/www/vhosts/lg38.de/conf/12942819130.01971000_httpd.include

Code:

php_admin_flag engine on
php_admin_flag safe_mode off
php_admin_value open_basedir /var/www/vhosts/lg38.de/httpdocs/:/tmp/
Der Pfad des require ist doch innerhalb der open_basedir. Was habe ich übersehen?

Besten Dank!