Glob больше не работает с Nginx - PullRequest
0 голосов
/ 25 апреля 2018

Редактировать

В моем коде нет ничего плохого, поэтому не стесняйтесь использовать его в том виде, в каком он есть, если вам когда-нибудь понадобится искать свою файловую систему изнутри PHP, выведите результаты.


Я создал класс для поиска по файлам, используя glob. Он работал отлично, но теперь, когда я перешел с Apache на Nginx, он всегда возвращает 0 результатов.

Вот мой код:

public static function search($path, $find, $caseSensitive = false)
{
    if ($path[strlen($path) - 1] !== '/')
        $path .= '/';
    $path = '../'.$path;
    $pathLen = strlen($path);
    $path .= '*';
    if ($caseSensitive)
        $files = self::globRecursive($path.$find);
    else
    {
        $findLen = strlen($find);
        for ($i = 0; $i < $findLen; $i++)
            $find1 .= '['.strtolower($find[$i]).strtoupper($find[$i]).']';
        $files = self::globRecursive($path.$find1);
    }
    $message = '';
    $count = count($files);
    if ($count === 0)
        return '"'.$find.'" not found.';
    foreach ($files as $file)
        $message .= substr($file, $pathLen).'<br />';
    return '"'.$find.'" found in '.$count.' files:<br />'.$message;
}

private static function globRecursive($pattern, $flags = 0)
{
    $files = glob($pattern, $flags);
    foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir)
        $files = array_merge($files, self::globRecursive($dir.'/'.basename($pattern), $flags));
    return $files;
}

1 Ответ

0 голосов
/ 25 апреля 2018

Проблема была связана с изменением моего корневого каталога.Просто добавление ../ к моему поисковому запросу устранило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...