【问题标题】:PHP: DirectoryIterator - using http adrress, not absolute path?PHP:DirectoryIterator - 使用 http 地址,而不是绝对路径?
【发布时间】:2023-03-15 14:16:02
【问题描述】:

首先,我正在使用 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 变量,在这种情况下为您提供您的 webroot hHttp://127.0.0.1:80),但我不能将它与 DirectortIterator 一起使用,因为它不适用于 http 地址,它需要文档路径.

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

【问题讨论】:

    标签: php iterator relative-path


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      相关资源
      最近更新 更多