Include von Dateien welche nicht innerhalb von Home liegen - HILFE

dwex

Erfahrenes Mitglied
Hallo Leute,

ich habe wieder einmal ein Verständnisproblem oder so.

Also ich habe folgende Ausgansposition:

Webserver mit Confixx.
Homeverzeichnis eines Users: /srv/www/htdocs/serv1/html - hier schaut der apache rein.
Der User kann auch noch auf folgendes Verzeichnis per FTP zugreifen: /srv/www/htdocs/serv1

So ich habe nun ein Gästebuch und habe das in 2 php-Dateien zerlegt.

Die erste Datei liegt im Homeverzeichnis des Users und
die zweite Datei soll in /srv/www/htdocs/php-scripte (also nicht erreichbar für den User) liegen.

wenn ich jetzt in der ersten Datein einen include wie folgt mache:
PHP:
include "../../php-scripte/gb.php";
oder
PHP:
include "/srv/www/htdocs/php-scripte/gb.php";
dann erhalte ich die Fehlermeldung:
Code:
Warning: main() [function.main]: open_basedir restriction in effect. File(/srv/www/htdocs/php-scripte/gb.php) is not within the allowed path(s): (/srv/www/htdocs/serv1/) in /srv/www/htdocs/serv1/html/testgbook.php on line 57

Warning: main(/srv/www/htdocs/gb.php) [function.main]: failed to create stream: Operation not permitted in /srv/www/htdocs/serv1/html/testgbook.php on line 57

Warning: main() [function.main]: Failed opening '/srv/www/htdocs/php-scripte/gb.php' for inclusion (include_path='.:/usr/share/php') in /srv/www/htdocs/serv1/html/testgbook.php on line 57

die datei gb.php welche ausserhalb des Document-Root liegt hat bereits die Rechte 755 (ich habe auch 777 probiert).
Das Ganze läuft auf einem Linuxsystem - unter XAMMP hat es prächtig funktioniert.

Noch ein Auszug aus der phpinfo:
Code:
safe_mode Off Off 
safe_mode_exec_dir /srv/www/htdocs/empty no value 
safe_mode_gid Off Off 
safe_mode_include_dir no value no value

Wer kann mir einen Tipp geben.
 
Zuletzt bearbeitet:
Hallo,

vielen Dank für die schnelle Antwort.

Tja die Konfig kann ich nicht ändern und die Scripte möchte ich so nicht zur Verfügung stellen.
Gibt es ne (am besten konstenlose) Möglichkeit das Script zu verschlüsseln zumindest soweit das ich die "normalen" Anwender am Kopieren hindern kann und das das Script nur auf den von mir gewünschten Servern läuft?
 
Du kannst das Verzeichnis mit .htaccess derart schützen, dass von außen (über HTTP) niemand drauf zugreifen kann. Deine Skripte haben vom Server jedoch Zugriff, um es einzubinden. So haben nur Leute Zugriff auf Deinen Code, die einen FTP-Account (für dieses Verzeichnis) oder direkten Zugang zum Server (und diesem User-Verzeichnis) haben. Diesen beiden Gruppen solltest du jedoch ein gewisses Vertrauen entgegenbringen, schließlich gibst Du ihnen ohnehin weitgehende Eingriffsrechte zu Deiner Seite.
Außerdem wird der Quelltext des Skriptes ohnehin nicht an den User übermittelt, da die Datei zunächst im PHP-Parser landet und nur die Ausgabe übermittelt wird, nicht der Code.

Gruß hpvw
 
Hallo,

ich glaube ich habe meine Frage nicht richtig formuliert.

Ich möchte nutzern eines "Unteraccounts" meines Servers einige Scripte zur Verfügung stellen. Das eigentliche GB-Script ist für alle User da und ich kann nicht erlauben das jemand etwas an dieser Datei ändert und die Datei soll ja Zentral für alle User nutzbar sein.

Jetzt hätte ich den include über http:// aufgerufen - da bekomme ich aber die Meldung das der User keinen zugriff zu MySql hat - da das Script ja auf einem anderen "virtuellen Server" liegt und die MySql-Datanbank hier offensichtlich mit den Werten des anderen Accounts nicht klarkommt.

Gibt es andererseits eine Möglichkeit den kompletten PHP-Code einer Datei welche wo anders liegt in die eigene Datei einzulesen und zu verwenden als wenn der Code direkt in der eigenen Datei stehen würde?
 
Zurück