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.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage