Glob 不再与 Nginx 一起工作
Glob no longer working with Nginx
编辑
我的代码没有任何问题,所以请按原样随意使用它,如果您需要从 PHP 中搜索您的文件系统,然后回显结果。
我创建了一个 class 来使用 glob
搜索文件。它工作得很好,但现在我已经从 Apache 迁移到 Nginx,它总是 returns 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;
}
问题是由于更改了我的根目录。只需在我的搜索查询前添加 ../
即可解决问题。
编辑
我的代码没有任何问题,所以请按原样随意使用它,如果您需要从 PHP 中搜索您的文件系统,然后回显结果。
我创建了一个 class 来使用 glob
搜索文件。它工作得很好,但现在我已经从 Apache 迁移到 Nginx,它总是 returns 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;
}
问题是由于更改了我的根目录。只需在我的搜索查询前添加 ../
即可解决问题。