Problem mit chdir
Hallo,
ich drücke mich mal kurz aus, ich nutze ein MyBB Forum. Außerdem schreibe ich derzeit ein HP-System, welches an die Datenbank von MyBB angeschlossen werden soll.
Meine Struktur sieht so aus:
root
/forum
/index.php
/global.php
/homepage
/main
/admin
/index.php
Ich will in die Index.php im Ordner Admin das ganze System einbinden. Mir wurde folgender Code für die Situation gegeben, dass beides einen Ordner unter dem root liegt:
Nun muss das ganze allerdings auf die vielen Unterordner angepasst werden, das tat ich so:
Das ganze ist nun schön und gut, jedoch zeigt er mir in jedem Fall nur folgenden Fehlercode an:
Gut, Zeile 17 ist im gesamten Script die Zeile, welche require '../../../forum/global.php'; beinhaltet. Leider finde ich nirgends einen Fehler.
Was fehlt euch an Informationen, oder könnt ihr mir so helfen?
ich drücke mich mal kurz aus, ich nutze ein MyBB Forum. Außerdem schreibe ich derzeit ein HP-System, welches an die Datenbank von MyBB angeschlossen werden soll.
Meine Struktur sieht so aus:
root
/forum
/index.php
/global.php
/homepage
/main
/admin
/index.php
Ich will in die Index.php im Ordner Admin das ganze System einbinden. Mir wurde folgender Code für die Situation gegeben, dass beides einen Ordner unter dem root liegt:
Spoiler
![]()
PHP-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59<?php chdir('../forum/'); // path to MyBB define("IN_MYBB", 1); require '../forum/global.php'; include_once '../forum/config.php'; if($mybb->user['uid']) { //überprüfen ob angemeldet //titel fehler beheben $titel = $mybb->user['usertitle']; if ($titel == '') { if ($mybb->user['usergroup'] == '2') { $titel = 'Verifizierter User'; } } //normale links ausgeben echo 'Angemeldet als:'.$mybb->user['username'].'<br>['.$titel.']'; echo '<br>'; echo '<li><a href="http://localhost/forum/memberlist.php">Mitgliederliste</a></li>'; echo '<li><a href="http://localhost/forum/member.php?action=profile&uid='.$mybb->user['uid'].'">Eigenes Profil</a></li>'; echo '<li><a href="http://localhost/forum/usercp.php">Profil ändern</a></li>'; //admin bzw mod link ausgeben if($mybb->usergroup['cancp'] == 1) { echo '<li><a href="http://localhost/acp.php">Admin Bereich</a></li>'; } if(is_moderator()) { echo '<li><a href="http://localhost/mcp.php">Moderatoren Bereich</a></li>'; } echo '<li><a href="http://localhost/forum/member.php?action=logout&logoutkey='.$mybb->user['logoutkey'].'">Logout</a></li>'; } else { //wegen zurückleitung $site = pathinfo($_SERVER['REQUEST_URI'], PATHINFO_BASENAME); if ($site == '') { $site = 'index3.php'; } $site = 'http://localhost/'.$site; ?> <!--Fom fürs login anzeigen--> <form action="../forum/member.php" method="post"> <table border="0"> <tr> <td>Username:</td> <td><input type="text" name="username" size="10" maxlength="30"></td> </tr> <tr> <td>Passwort:</td> <td><input type="password" name="password" size="10"></td> <tr> <td><input type="checkbox" id="quick_login_remember" name="quick_remember" value="yes">Merken?</td> <td><input type="submit" class="submit" name="submit" value="Login"></td> </tr> <tr> <td></td> <td><input type="hidden" name="action" value="do_login"></td> <td><input type="hidden" name="url" value="<?php echo $site; ?>"></td> </tr> </table> </form> <?php } ?>
Nun muss das ganze allerdings auf die vielen Unterordner angepasst werden, das tat ich so:
Spoiler
![]()
PHP-Quelltext
1 2 3 4 5<?php chdir('../../../forum/'); // path to MyBB define("IN_MYBB", 1); require '../../../forum/global.php'; include_once '../../../forum/config.php';
Das ganze ist nun schön und gut, jedoch zeigt er mir in jedem Fall nur folgenden Fehlercode an:
Spoiler
![]()
Quellcode
1 2 3 4 5 Warning: require() [function.require]: open_basedir restriction in effect. File(../../../forum/global.php) is not within the allowed path(s): (/users/rose4you/temp:/users/rose4you/www) in /users/*ZENSIERT*/www/homepage/main/admin/index.php on line 17 Warning: require(../../../forum/global.php) [function.require]: failed to open stream: Operation not permitted in /users/*ZENSIERT*/www/homepage/main/admin/index.php on line 17 Fatal error: require() [function.require]: Failed opening required '../../../forum/global.php' (include_path='.') in /users/*ZENSIERT*/www/homepage/main/admin/index.php on line 17
Gut, Zeile 17 ist im gesamten Script die Zeile, welche require '../../../forum/global.php'; beinhaltet. Leider finde ich nirgends einen Fehler.

Was fehlt euch an Informationen, oder könnt ihr mir so helfen?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Rose4You« (14. Januar 2012, 17:49)
Bist du sicher das du in deiner Verwaltungsstruktur mit den ../../../ nicht zu hoch gehst?
Der Fehler könnte bedeuten das du in einem Oberverzeichnis bist auf das du keinen direkten Zugriff hast.
Versuche mal die Menge der ../ zu reduzieren und prüfe dann nach jedem den du wegnimmst ob es klappt.
Der Fehler könnte bedeuten das du in einem Oberverzeichnis bist auf das du keinen direkten Zugriff hast.
Versuche mal die Menge der ../ zu reduzieren und prüfe dann nach jedem den du wegnimmst ob es klappt.
"Fehler sind immer zu Verzeihen, wenn man den Mut hat, diese auch zu zugeben." Lee Jun-Fan
Also require und include_once müssten richtig sein, denn sobald ich chdir veränder wird dort das Formular angezeigt. Jedoch entsteht dann beim chdir der folgende Fehlercode:
Ideen?
Spoiler
![]()
Quellcode
1 Warning: chdir() [function.chdir]: No such file or directory (errno 2) in /users/*ZENSIERT*/www/homepage/main/admin/test.php on line 2
Ideen?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Rose4You« (14. Januar 2012, 17:50)
hallo Rose,
bevor ich mit Raten anfange, kannst du bitte die Überbreiten CodePassagen in Spoilertags packen? (im Editor das Symbol:
) Denn in code-tags gibt es keinen autom. Zeilenumbruch, was dazuführt das auch der restliche (ausserhalb stehende) Text auch nicht mehr automatisch umgebrochen wird, was wiederum den Lesefluss doch erheblich behindert ... wenn es dich nicht stört so denke zumindest an jene von denen du Hilfe erwartest ...
zu deiner verzeichnissstruktur,
du schreibst die sähe so aus:
in deinen Fehlermeldungen sieht sie aber eher so aus:
┳ / (oder root)
┗┳ users
┗┳ *ZENSIERT*
┗┳ www
┣┳ forum
┃┣ index.php
┃┗ global.php
┗┳ hompage
┗┳ main
┗┳ admin
┣ index.php
┗ test.php
aber weil das nur geraten ist wäre es nett zu wissen wie es denn wirklich aussieht oder aber du erklärst nochmal die Syntax deiner Verzeichnisbeschreibung
Die Fehlermeldungen deuten darauf hin das es nicht erlaubt ist in dem Root-Verzeichniss zu lesen, eventuell reicht es ja schon aus das Verzeichnis forum unterhalb von Verzeichnis hompage anzusiedeln ...
Gruß
Ego
bevor ich mit Raten anfange, kannst du bitte die Überbreiten CodePassagen in Spoilertags packen? (im Editor das Symbol:
den teil könnte man wunderbar in Spoilertags packen
![]()
Quellcode
1 2 3 4 5 Warning: require() [function.require]: open_basedir restriction in effect. File(../../../forum/global.php) is not within the allowed path(s): (/users/rose4you/temp:/users/rose4you/www) in /users/*ZENSIERT*/www/homepage/main/admin/index.php on line 17 Warning: require(../../../forum/global.php) [function.require]: failed to open stream: Operation not permitted in /users/*ZENSIERT*/www/homepage/main/admin/index.php on line 17 Fatal error: require() [function.require]: Failed opening required '../../../forum/global.php' (include_path='.') in /users/*ZENSIERT*/www/homepage/main/admin/index.php on line 17
zu deiner verzeichnissstruktur,
du schreibst die sähe so aus:
root
/forum
/index.php
/global.php
/homepage
/main
/admin
/index.php
in deinen Fehlermeldungen sieht sie aber eher so aus:
┳ / (oder root)
┗┳ users
┗┳ *ZENSIERT*
┗┳ www
┣┳ forum
┃┣ index.php
┃┗ global.php
┗┳ hompage
┗┳ main
┗┳ admin
┣ index.php
┗ test.php
aber weil das nur geraten ist wäre es nett zu wissen wie es denn wirklich aussieht oder aber du erklärst nochmal die Syntax deiner Verzeichnisbeschreibung

Die Fehlermeldungen deuten darauf hin das es nicht erlaubt ist in dem Root-Verzeichniss zu lesen, eventuell reicht es ja schon aus das Verzeichnis forum unterhalb von Verzeichnis hompage anzusiedeln ...
Gruß
Ego
HI,
ich hab das ganze dann eben mal in Spoiler gepackt.
Und ja, die Struktur die du hier gezeigt hast ist richtig. Ich hab das ganze mit Leerzeichen gemacht, welche dann jedoch nciht so umgesetzt worden sind, wie sie sollten. Danke!
Das Verzeichnis forum unter dem verzeichnis homepage anzusiedeln habe ich versucht, jedoch sortiert sich der root Ordner Alphabetisch, dahe gelang es mir nicht.
ich hab das ganze dann eben mal in Spoiler gepackt.

Und ja, die Struktur die du hier gezeigt hast ist richtig. Ich hab das ganze mit Leerzeichen gemacht, welche dann jedoch nciht so umgesetzt worden sind, wie sie sollten. Danke!
Das Verzeichnis forum unter dem verzeichnis homepage anzusiedeln habe ich versucht, jedoch sortiert sich der root Ordner Alphabetisch, dahe gelang es mir nicht.
Moin,
so wie es aussieht: allowed path(s): (/users/rose4you/temp:/users/rose4you/www)
ist "/users/rose4you/www" schon in den include_path mit drinn dann sollte der include wie folgt funktionieren:
ansonsten gibt es den Befehl set_include_path
mehrere Pfade setzen:
MfG
so wie es aussieht: allowed path(s): (/users/rose4you/temp:/users/rose4you/www)
ist "/users/rose4you/www" schon in den include_path mit drinn dann sollte der include wie folgt funktionieren:
|
|
PHP-Quelltext |
1 2 |
require './forum/global.php';
include_once './forum/config.php';
|
ansonsten gibt es den Befehl set_include_path
|
|
PHP-Quelltext |
1 2 3 |
set_include_path(get_include_path() . PATH_SEPARATOR . '/users/rose4you/www/forum')
require '.global.php';
include_once '.config.php';
|
mehrere Pfade setzen:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 |
$includePath = array(
realpath('/users/rose4you/www/forum'),
realpath('/users/rose4you/www/homepage'),
realpath('/users/rose4you/www/homepage/main'),
realpath('/users/rose4you/www/homepage/main/admin'),
get_include_path() // vorhandene Pfade
);
set_include_path(implode(PATH_SEPARATOR, $includePath));
require 'global.php';
include_once 'config.php';
|
MfG
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »thunder« (16. Januar 2012, 05:59)
Ähnliche Themen
-
PHP »-
file ausführen in php mit exec(), aber wie, oder mit proc_open()?
(24. Mai 2005, 12:56)
-
PHP »-
includen aus anderem Ordner!
(8. Januar 2004, 18:14)
-
PHP »-
Verzeichnisse erstellen...
(20. Juni 2003, 15:55)
-
PHP »-
Erweiterte pfadangabe bei include()
(2. Mai 2003, 19:46)


