PHP scandir和相对路径

时间:2019-02-09 19:33:04

标签: php scandir

我已经尝试了在此阅读的所有解决方案,但似乎无法使其正常工作。

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

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

我不想对example.com部分进行硬编码,因为这会因站点而异。我尝试了以下多种组合:dirname( FILE ), DIR ,$ _ SERVER ['SERVER_NAME']和$ _SERVER ['REQUEST_URI']等。我要么出现“无法打开目录,未在...中实现”错误或完全不显示任何内容。这是我正在使用的代码:

    $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;

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

2 个答案:

答案 0 :(得分:1)

$ 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一起使用,但这主要是在本地/开发环境中进行的。

答案 1 :(得分:0)

对不起,我无法写评论问你一个问题(信誉低)。

据我从您的解释中了解到,您想添加可能的文件夹名称,以使您的探针能够自动工作。

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

$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;

希望它会有所帮助:)