[PHP] file_exists und scandir, mal gehts mal nicht

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von finke, 03.03.2011.

  1. finke

    finke Eroberer

    Dabei seit:
    05.07.2007
    Beiträge:
    63
    Zustimmungen:
    0
    HI, Ich habe zZ ein ein Problem mit den oben gennanten Funktionen.
    Ich sehe gerade nicht durch, in welchen Verzeichnissen diese Funktionen alles suchen.
    Ich habe 2 Clasen (Content und Design) jeweils in "{DOCUMENT_ROOT}/cms/inc/class/", welche über "{DOCUMENT_ROOT}/cms/index.php" geladen werden (require_once).

    In beiden Dateien wird via file_exists überprüft ob gewisse Dateien existieren.
    Content:
    PHP:
    if(!ADMIN && file_exists('inc/design/'.Design::getDesign().'/'.$template)) $template 'inc/design/'.Design::getDesign().'/'.$template;
    Design (getDesign):
    PHP:
    if(!file_exists('inc/design/'.$design.'.htm')){
                
    $files scandir('inc/design');
    Wärend ein Aufruf über die Content Klasse funktioniert (inclusive dem Aufruf con Design::getDesign()) wirft der Aufruf von getDesign() innerhalb der Klasse Design folgende Fahler:
    Code:
    Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(inc/design/g.htm) is not within the allowed path(s): (/users/projektog/temp:/users/projektog/www) in /users/projektog/www/cms/inc/class/class.Design.php on line 21
    
    Warning: scandir() [function.scandir]: open_basedir restriction in effect. File(inc/design) is not within the allowed path(s): (/users/projektog/temp:/users/projektog/www) in /users/projektog/www/cms/inc/class/class.Design.php on line 22
    
    Warning: scandir(inc/design) [function.scandir]: failed to open dir: Operation not permitted in /users/projektog/www/cms/inc/class/class.Design.php on line 22
    
    Warning: scandir() [function.scandir]: (errno 1): Operation not permitted in /users/projektog/www/cms/inc/class/class.Design.php on line 22
    
    Kann mir einer sagen warum der indireckte Aufruf funktioniert, der Aufruf innerhalb der Klasse allerdings nicht?
    Anbei die Kompletten Classendateien.
    Den Anhang class.zip betrachten
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 lordlamer, 03.03.2011
    lordlamer

    lordlamer Haudegen

    Dabei seit:
    15.05.2003
    Beiträge:
    703
    Zustimmungen:
    0
    Ort:
    hamburg
    Hi,

    versuch mal mit absoluten Pfaden zu arbeiten.

    Gruß
    Frank
     
  4. finke

    finke Eroberer

    Dabei seit:
    05.07.2007
    Beiträge:
    63
    Zustimmungen:
    0
    Das würde Prinzipiell gehen, allerdings müsste ich dann auch komplett die Smarty Klassen bearbeiten. Sobald es ein mal spinnt gehts für den Sietenaufruf gar nicht mehr. Und wenn ich überall die absoluten Pfade rein mache, werde ich halt bei jedem mal wenn ich den Server wechsle Spaß haben die ganzen Stellen zu suchen.
     
  5. #4 lordlamer, 04.03.2011
    lordlamer

    lordlamer Haudegen

    Dabei seit:
    15.05.2003
    Beiträge:
    703
    Zustimmungen:
    0
    Ort:
    hamburg
    Hi,

    naja du musst ja nicht die Pfade im Quellcode pflegen. Du kannst ja ne Config-Variable setzen und dann in deinen Pfaden einfach den Pfad entsprechend davor packen.

    Gruß
     
  6. #5 finke, 04.03.2011
    Zuletzt bearbeitet: 04.03.2011
    finke

    finke Eroberer

    Dabei seit:
    05.07.2007
    Beiträge:
    63
    Zustimmungen:
    0
    Werde das denke auch so machen. Wundere mich trotzdem, das es manchmal geht, und manchmal nicht.
    EDIT:
    Habs mal getestet, allerdings konnte ich einen Fehler dadurch nicht beseitigen:
    PHP:
    Fatal errorException thrown without a stack frame in Unknown on line 0
    Schein also irgend wo noch nen Fehler drinn zu haben. In den Klassen hat aber keiner einen gesehen oder?
    Der fehler tritt allerdings erst auf, nachdem schon alles vorbei ist.
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. dmaphy

    dmaphy Routinier

    Dabei seit:
    16.04.2004
    Beiträge:
    482
    Zustimmungen:
    0
    Ort:
    Hamburg
    Die Ursache stand doch schon in der ersten Fehlermeldung die du gepostet hast: open_basedir restriction in effect. Das ist eine Option, die man gewöhnlich in der php.ini oder in der Webserver-Konfiguration setzt. Die soll dich davon abhalten ein Verzeichnis höher oder in andere Pfade zu gehen und beschränkt dich auf die Verzeichnisse wo dein Script liegt. Auf welche Pfad du beschränkt bist zeigt die Fehlermeldung ja alles mit an. Lösung: Entweder Script umschreiben so dass du dich entlang dieser Pfade bewegst oder falls du selber der Admin bist, die Option ausschalten.
     
  9. finke

    finke Eroberer

    Dabei seit:
    05.07.2007
    Beiträge:
    63
    Zustimmungen:
    0
    Wenn das wirklich das Problem wäre, würde es beim allen anderen Aufrufen auch nicht gehen.
    Das Problem war der Destructor der Klasse Design. Genauer:
    PHP:
    $this->display('inc/design/gpp.htm'nullnullnulltrue);
    Dies resultierte in
    Code:
    Fatal error: Exception thrown without a stack frame in Unknown on line 0  
    und das warf PHP so durcheinander, das er die Pfade nicht mehr richtig öffnen konnte.
    Versteh nur nicht warum das so zu nem fehler führt. Meines erachtens ist der Destructor doch genau für solche aufräumarbeiten da oder? Hab jetzt ne methode geschrieben, welche ich manuell von ausen aufrufe bevor ich das Objekt zerstöre. Nicht ganz so wie gewünscht, geht aber auch.

    Was ich auch nie verstanden habe, warum der dne Destructor imemr 2 mal aufgerufen habe (hab ich durch einfügen eines echos mitbekommen). Ich befürchte fast, das dies das eigentliche Problem ist. Kann das Problem jemand löschen? das ich das wieder automatisch machen kann?
     
Thema:

[PHP] file_exists und scandir, mal gehts mal nicht

Die Seite wird geladen...

[PHP] file_exists und scandir, mal gehts mal nicht - Ähnliche Themen

  1. [PHP] Autologin-Funktion

    [PHP] Autologin-Funktion: HI, habe mir eben mal eine Autologin Funktion überlegt. Ich weiß zwar, das solche Funktionen zum teil, gerade im Web, argwöhnisch beliebäugelt...
  2. [PHP] Session-Authentifizierung zentralisieren

    [PHP] Session-Authentifizierung zentralisieren: Hi, ich prüfe auf jeder geschützten Seite ob der enutzer befugt ist diese zu sehen oder nicht mittels: <?php session_start(); $hostname...
  3. [PHP] Checkboxen-Auswahl + dazugehörige Werte in Array

    [PHP] Checkboxen-Auswahl + dazugehörige Werte in Array: Hi, ich habe mit checkboxen eine Liste erstellt, aus der verschiedene Gegenstände durch Haken setzen markiert werden können. Über einen...
  4. [PHP]Passwortschutz für Verzeichnisse

    [PHP]Passwortschutz für Verzeichnisse: Hi, ich hätte gerne auf meinem Webserver, dass auf der Startseite der Benutzername und das Passwort angegeben werden müssen und man sich so...
  5. [PHP] Sortieren

    [PHP] Sortieren: Könnt ihr bitte helfen? Ich bekomme es einfach nicht hin.. :( Zum Problem: ich möchte die Bilder die dieses Script ausgibt nach dem...