Wie funktioniert die Pfadauflösung in require_once?
Ich habe eine Web-App in PHP geschrieben, als ich auf eine seltsame Situation gestoßen bin. Betrachten Sie zur Veranschaulichung meines Problems eine Web-App dieser Struktur:
/
index.php
f1/
f1.php
f2/
f2.php
Inhalt dieser Dateien:
index.php:
<?php require_once("f1/f1.php"); ?>
f1.php:
<?php require_once("../f2/f2.php"); ?>
f2.php: leer
Wenn ich jetzt versuche, index.php in meinem Browser zu öffnen, erhalte ich folgende Fehlermeldung:
Warning: require_once(../f2/f2.php) [function.require-once]:
failed to open stream: No such file or directory in /var/www/reqtest/f1/f1.php on line 2
Fatal error: require_once() [function.require]:
Failed opening required '../f2/f2.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/reqtest/f1/f1.php on line 2
Gibt es etwas, das ich vermisse? Wie funktionieren Include-Pfade in PHP?
Bevor ich diese Frage stellte, versuchte ich zu experimentieren und herauszufinden. Ich habe einen weiteren Test eingerichtet, so:
/
index.php
f1/
f1.php
f2.php
index.php:
<?php require_once("f1/f1.php"); ?>
f1.php:
<?php require_once("f2.php"); ?>
f2.php: leer
Zu meiner Überraschung (und völliger Verwirrung) hat das gut geklappt!
Also, was ist das Geheimnis hinter der Pfadauflösung?
PS Ich sahdiese Frage, aber es beantwortet immer noch nicht den zweiten Fall, den ich hier angegeben habe.