Как работает разрешение пути в require_once?

Я писал веб-приложение на PHP, когда столкнулся со странной ситуацией. Чтобы проиллюстрировать мою проблему, рассмотрим веб-приложение такой структуры:

/
    index.php
    f1/
        f1.php
    f2/
        f2.php

Содержимое этих файлов:

index.php:

<?php require_once("f1/f1.php"); ?>

f1.php:

<?php require_once("../f2/f2.php"); ?>

f2.php: пусто

Теперь, когда я пытаюсь открыть index.php в моем браузере, я получаю эту ошибку:

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

Есть ли что-то очевидное, что мне не хватает? Как работают пути включения в PHP?

Прежде чем задать этот вопрос, я попытался поэкспериментировать и выяснить. Я настроил еще один тест, вот так:

/
    index.php
    f1/
        f1.php
        f2.php

index.php:

<?php require_once("f1/f1.php"); ?>

f1.php:

<?php require_once("f2.php"); ?>

f2.php: пусто

К моему удивлению (и полному замешательству), это сработало нормально!

Итак, в чем секрет разрешения пути?

PS я виделэтот вопрос, но это все еще не отвечает на второй случай, который я изложил здесь.

Ответы на вопрос(5)

Ваш ответ на вопрос