Symfony FileSystem删除不应删除的内容

时间:2016-03-24 13:46:30

标签: php symfony

我遇到Symfony Filesystem类的麻烦。我试图通过删除方法删除文件夹。

这是我的方法。

public function createArchive($source, $destination) {
        $zipper = new Zipper();
        $zipper->make('backup/'.$this->getBackupName().'.zip')->add('backup/'.$this->getBackupName().'/');

        $fileSystem = new Filesystem();
        $fileSystem->remove('backup/'.$this->getBackupName());
    }

Zipper创建zip存档文件夹i放在第二个参数中。所以例如我有一个文件夹backup / 2016_03_24_full它将在backup / 2016_03_24_full.zip中创建zip存档。

然后我尝试删除backup / 2016_03_24_full文件夹,因此只有zip存档。但Filesystem删除方法也删除了我的zip。它应该只删除我放入参数的文件夹,但是出了点问题......

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

由于您将文件夹传递给remove方法,因此它首先尝试通过调用rmdir()来删除该目录。此函数需要该文件夹为空。由于您的目录不是空的,因此可以使用依赖于PHP的FilesystemIterator的回退。

我的猜测是,给出没有斜杠(/)的文件夹的名称是从文件夹的外部和内部挑选文件并删除它们。

您可以看到具体的算法here