PHP:DirectoryIterator - 使用http adrress,而不是绝对路径?

时间:2010-12-09 21:00:07

标签: php iterator relative absolute

首先,我正在使用Server2Go创建一个基于CD-ROM的站点。

我正在尝试使用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:/等等),这会导致.php文件无法打开的问题,因为它们只能打开基于http的URL。我需要做的是将路径输出为http://路径,或相对于Web根目录。还有另一个名为S2G_BASE_URL的Server2Go ENV varialbe,在这种情况下为您提供了webroot hHttp://127.0.0.1:80),但是我不能将它与DirectortIterator一起使用,因为它不能与http地址一起使用,它需要文档路径

有没有人对如何做到这一点有任何想法?

1 个答案:

答案 0 :(得分:2)

在回显getPathname方法的输出之前,你必须在字符串中替换$ _SERVER [“DOCUMENT_ROOT”]。

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