PHP scandir 和相对路径

PHP scandir and relative path

我已经尝试了我在此处阅读的所有解决方案,但似乎无法使它起作用。

我正在尝试在此文件中调用 scandir: https://www.example.com/cms/uploader/index.php

列出此文件夹中的所有文件和目录: https://www.example.com/uploads/

我不想对 example.com 部分进行硬编码,因为这会因站点而异。我试过很多组合:dirname(FILE), DIR, $_SERVER['SERVER_NAME'], and $_SERVER['REQUEST_URI'],等等。我要么收到 "failed to open dir, not implemented in..." 错误,要么什么都不显示。这是我正在使用的代码:

    $directory = __DIR__ . '/../../uploads';
    $filelist = "";
    $dircont = scandir($directory); 
    foreach($dircont AS $item) 
    if(is_file($item) && $item[0]!='.')
    $filelist .= '<a href="'.$item.'">'.$item.'</a>'."<br />\n";
    echo $filelist;

执行此操作的正确方法是什么?

抱歉,我无法写评论来问你一个问题(低信誉)。

据我从你的解释中了解到,你想添加可能的文件夹名称以使你的探测在某种程度上自动工作。

如果是,那么我会做这样一段代码;

$website = 'http://localhost/';
$folders = array('uploads','files', 'uploads/files');

$filelist = "";

foreach ($folders as $kinky) 
$dircont = scandir($website.$kinky);
foreach ($dircont AS $item)
    if (is_file($item) && $item[0] != '.')
        $filelist .= '<a href="' . $item . '">' . $item . '</a>' . "<br />\n";

echo $filelist;

希望对您有所帮助:)

$directory 变量设置错误。如果你想向上移动 2 个目录,请像这样使用 dirname():

$directory = dirname(__DIR__,2) . '/uploads';
$filelist = "";
$dircont = scandir($directory);

foreach($dircont AS $item) {
    if(is_file($item) && $item[0]!='.')
        $filelist .= '<a href="'.$item.'">'.$item.'</a>'."<br />\n";
}


echo $filelist;

您可以阅读有关 scandir 的更多信息,如果启用 allow_url_fopen,有一节介绍如何将其与 url 一起使用,但这主要是在 local/development 环境中。