Wie require_once aus verschiedenen Verzeichnissen?
Ich versuche, bedürfen meiner "library" - Dateien aus php-Dateien in verschiedenen Ordnern, aber es gibt Fehler, wenn Sie versuchen, auf Sie zuzugreifen aus einem Unterordner. Zum Beispiel habe ich ein solches Verzeichnis:
+ home
- file1.php
++ subfolder
- file2.php
++ libraries
- code_generator.php
- database_library.php
code_generator.php, hängt auch davon ab die andere Bibliothek:
(LINE 25) require_once(realpath("./libraries/database_library.php"));
//this works fine when called from file1.php, but not from file2.php
Ich versuche zu nennen, code_generator aus ./Unterordner/file2.php wie:
chmod("../libraries/codegenerator.php", 0777); //for the error at the end of this question
require_once("../libraries/code_generator.php");
Wenn ich file2.php es ergibt 2 Fehler:
**Warning**: require_once(C:\xampp\htdocs\home\subfolder): failed to open stream: Permission denied in C:\xampp\htdocs\home\libraries\code_generator.php on line 25
**Fatal error**: require_once(): Failed opening required '' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\home\libraries\code_generator.php on line 25
*Zeile 25 require_once(realpath("./libraries/database_library.php"));
- Ich denke, dass, wenn Sie haben keine Berechtigungen um diese Datei zu öffnen, weder müssen Sie chmod es.
- das ist, was ich bin, zu Ahnen. die realpath () - Funktion korrekt aus file1.php aber es gibt in leer file2.php. Ich glaube, ich bin falsch. Aber was ist der richtige Weg?
- Ich bemerkte dies im PHP-Handbuch für realpath() : "Das ausführen von Skripts müssen die ausführbaren Berechtigungen für alle Verzeichnisse in der Hierarchie, sonst realpath() FALSE zurückgeben." Also, wie bekomme ich die "Berechtigungen"?
InformationsquelleAutor marvin | 2013-02-08
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Datei ist nicht vorhanden.
Die Fehlermeldung lautet:
Und:
Fehlermeldungen Lügen nie (naja fast nie), daher Sie sind Aufruf:
Realpath false zurück nach fehlenden Dateien
Realpath false zurückgeben, wenn Sie übergeben einen Pfad zu einer Datei, die nicht existiert:
Daher, das argument übergeben realpath bezieht sich nicht auf eine Datei, das ist der Grund, warum der Pfad nicht funktioniert.
Nicht mehr verwenden realpath
Wenn Sie entfernen die Verwendung von realpath, werden Sie feststellen, dass die Fehlermeldung wohl auf der Hand. Auf eine Vermutung, die Sie versuchen zu gehören
C:\xampp\htdocs\home\subfolder\libraries\database_library.php
- da ist eine fehlende.
in diesem:Wenn Sie stattdessen einfach definieren, eine root-Pfad:
Dann können Sie diese Konstante mit absoluter Sicherheit, dass diese Art von Probleme nicht auftreten:
Und wenn man den Pfad falsch ist, wird die Fehlermeldung klar machen, was das problem ist.
Können Sie die PHP-super-Globale variable $_SERVER['DOCUMENT_ROOT'], um den vollständigen Pfad zu Ihrem server-Dokument-root, zB. /var/www/website/public.
Den code könnte wie folgt Aussehen:
require_once $_SERVER['DOCUMENT_ROOT'] . '/libraries/database_library.php';
Diese Weise brauchen Sie nicht, um die document-root-Pfad "manuell", wird PHP immer Holen es für Sie ab und stellen es in $_SERVER['DOCUMENT_ROOT'] in irgendeiner PHP-Datei, die im server-Dokument-root.