Дело в том, что функция basename(), через которую переменной filename присваивается имя файла, возвращает только последнюю часть пути, то есть "../../www/fl4g.txt" превращается в "fl4g.txt".
Более подробно про эту функцию тут: Клик
Спасибо большое за подробное объяснение! Теперь понял)