我收到“致命错误:达到'100'的最大函数嵌套级别,正在中止!”错误使用 glob().为什么


I'm getting "Fatal error: Maximum function nesting level of '100' reached, aborting!" error using glob(). why?

function deletefiles($directory)
{
    $folder = glob($directory);  // <--error on this line.
    foreach($folder as $file)
    {
        if(is_dir($file)) 
        { 
            deletefiles($directory);
        } 
        else 
        {
            unlink($file);
        }
    }
    if(is_dir($directory))
    {
        rmdir($directory);
    }
}

这是导致错误的代码。该函数应该删除指定文件夹的所有文件和子目录。每个文件夹最多只包含 5 个子文件夹。当文件夹中只有文件时,此功能有效。任何见解将不胜感激。

需要修复 2 个地方。

function deletefiles($directory)
{
  $folder = glob($directory . '/*'); // <-- here
  foreach($folder as $file)
  {
    if(is_dir($file)) 
    { 
      deletefiles($file); // <-- and here
    } 
    else 
    {
      unlink($file);
    }
  }
  if(is_dir($directory))
  {
    rmdir($directory);
  }
}

看起来您正在发送带有$directory而不是$file的函数请求,这意味着您正在深入研究结构,您只是在同一文件夹中多次调用相同的函数。

我想你想把第一个if部分改成这样:

if(is_dir($file)) 
{ 
    deletefiles($file);
}