PHP Scandir и относительный путь - PullRequest
0 голосов
/ 09 февраля 2019

Я перепробовал все решения, которые читал здесь, но не могу заставить это работать.

Я пытаюсь вызвать 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 голосов
/ 09 февраля 2019

Переменная $ 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 , есть раздел о том, как использовать его с URL-адресами, если allow_url_fopenвключен, но это в основном в локальной среде / среде разработки.

0 голосов
/ 09 февраля 2019

Извините, я не могу написать комментарий, чтобы задать вам вопрос (низкая репутация).

Насколько я понимаю из вашего объяснения, вы хотели добавить возможные имена папок для проверкиспособ будет работать автоматически.

Если да, то я бы сделал такой фрагмент кода вот так:

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

Надеюсь, это поможет:)

...