PHP: DirectoryIterator - используя адрес http, а не абсолютный путь? - PullRequest
3 голосов
/ 10 декабря 2010

Прежде всего, я создаю сайт на CD-ROM, используя Server2Go.

Я пытаюсь использовать DirectoryIterator для создания панели навигации, взятой прямо из структуры моей папки / файлафайлов .php.Вот мой код:

<?php
$root = $_ENV["S2G_SERVER_DOCROOT"]."/content/";
$files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($root));
foreach($files as $file){
    echo '<li><a href=' . $file->getPathname() . '>' . $file->getPathname() . PHP_EOL . '</a></li>';
} 
?>

Проблема заключается в том, что он выводит полный абсолютный путь для каждой папки / файла (например, c: / etc и т. Д.), Что вызывает проблему, связанную с файлами .php.не открывайте, так как они могут открываться только с http-адреса.Что мне нужно сделать, это вывести пути в виде http: // paths или относительно веб-корня.Существует еще один вариант Server2Go ENV, называемый S2G_BASE_URL, который дает вам webroot h Http://127.0.0.1:80 в этом случае), но я не могу использовать это с DirectortIterator, поскольку он не работает с адресами http, ему нужны пути к документам.1009 * У кого-нибудь есть мысли о том, как я могу это сделать?

1 Ответ

2 голосов
/ 10 декабря 2010

Прежде чем вывести вывод из метода getPathname, вам нужно заменить в строке $ _SERVER ["DOCUMENT_ROOT"].

$path=str_replace($_SERVER["DOCUMENT_ROOT"],'',$file->getPathname());

...