Das ist im Grunde genommen soweit ich weiß. Ich kann einschließen oder require_once ein Skript, das keine hat includes/require_once, aber wenn es der Fall ist, dann wirft PHP mir diesen Fehler:PHP löst einen schwerwiegenden Fehler aus, wenn man versucht, ein Skript einzuschließen/zu benötigen, das ein anderes Skript enthält/benötigt
Warning: require_once(../constants/constants.php) [function.require-once]: failed to open stream: No such file or directory in C:\Home\Workspace\PHP\DD\src\log\test.php on line 7
Fatal error: require_once() [function.require]: Failed opening required '../constants/constants.php' (include_path='.;C:\Program Files\Xampp 1.7.7\php\PEAR') in C:\Home\Workspace\PHP\DD\src\log\test.php on line 7
Der Weg ist richtig. Ich fürchte, ich habe vielleicht eine Konfigurationsdatei des Apache-Webservers durcheinander gebracht (ich habe eine .htaccess-Datei erstellt, um mod_rewrite zu verwenden, um bessere URLs zu erstellen). Die .htaccess-Datei Inhalt ist gerade dies:
Options +FollowSymLinks
RewriteEngine on
RewriteRule !.(gif|jpg|png|css)$ index.php
Meine Apache Document-Root ist "C:/Home/Arbeitsbereich/PHP"
UPDATE: Ich fand heraus, dass eine absolute Verwendung Pfad funktioniert, wie folgt:
require_once $_SERVER['DOCUMENT_ROOT']."/DD/src/constants/constants.php";
Ich denke, ich werde nur relative Pfade dann nicht verwenden.
Dies hat nichts mit Apache zu tun. Die Dateien, die das verschachtelte Include enthalten, müssen beim Einfügen die richtigen Pfade relativ zu sich selbst haben. '../ constants/constants.php' ist nicht an der richtigen Stelle basierend auf der Include-Datei. –
@Michael Sie sollten dies als Antwort setzen. ;-) Verwenden Sie 'dirname (__ FILE __)', um das aktuelle Verzeichnis der php-Datei zu erhalten, unabhängig vom aktuellen Arbeitsverzeichnis, das für alle php-Dateien gleich ist, auch wenn sie sich in verschiedenen Verzeichnissen befinden. – Basti