Ich habe ein paar Anrufe zu is_dir
auf einer Seite. Sie haben immer keine Probleme gemacht.PHP: open_basedir erlaubt Pfad
Vor ein paar Tagen hat das Hosting-Unternehmen PHP von 5.2 auf 5.3 aktualisiert. Seitdem alle meine Anrufe is_dir
haben in der folgenden Fehler (Meldung) ergab:
Warning: is_dir(): open_basedir restriction in effect.
File(/home/virtual/domain.com/public_html/galleries/img/002.JPG/)
is not within the allowed path(s):
(/home/virtual/domain.com:/home/virtual/_tmp)
in /home/virtual/domain.com/public_html/index.php on line 201
Diese mir ein Rätsel.
ist klar, nach der Fehlermeldung (und php_info
auch), das Verzeichnis /home/virtual/domain.com
(ohne Schrägstrich, also einschließlich der Unterverzeichnisse) enthalten ist/in open_basedir
aktiviert und die Dateien, die is_dir
versucht, durch iterieren sind alle befindet sich in Unterordnern unter diesem Ordner. Warum also sind sie nicht innerhalb der erlaubten Pfade? Offensichtlich sind sie!
Merkwürdigerweise dieser Fehler scheint nur bis zu zeigen, wenn is_dir
false zurück, das heißt, wenn die Datei nicht ein Ordner, sondern eine reguläre Datei. Es scheint durch Verzeichnisse in Ordnung zu iterieren, ohne Fehler zu werfen.
Ähnliche Frage zuvor hier gepostet: Open_basedir restriction oddness (keine Lösung gefunden).
Wer hat irgendwelche Ideen?
(Hinweis: Einstellungen PHP Ändern ist keine Option, da dies ein Hostern ist, und ich habe keinen Zugang admin)
Ist diese Nachricht der tatsächliche Fehler ist? Oder sind bestimmte Sonderzeichen in einem Pfad? – SteAp
Einige Pfade haben einige Sonderzeichen: '&' (Ampersand) und '_' (Unterstrich). Der Fehler tritt jedoch auch bei solchen Pfaden auf, die überhaupt keine Sonderzeichen enthalten (außer Großbuchstaben zählen als Sonderzeichen). Und die Sonderzeichen befinden sich alle in Verzeichnisnamen (und werden in den Fällen, in denen "is_dir" zu "TRUE" führt) korrekt analysiert und iteriert, niemals in Dateinamen (wo der Fehler auftritt). –