Laravel 不删除目录

Ale*_*lex 4 php laravel laravel-5 laravel-5.1

我在删除目录时遇到问题。

我正在创建一个临时目录,在其中解压缩文件,并在完成后将其删除。

我的代码看起来很像这样:

$tempPath = storage_path('temp/'.$filemd5.'/');
Storage::makeDirectory($tempPath);
$success = Storage::deleteDirectory($tempPath);
return $success;
Run Code Online (Sandbox Code Playgroud)

它不返回任何内容,目录也不会被删除。

Mih*_*org 6

我认为如果您从 中删除尾随反斜杠$tempPath,它可能会起作用。

$tempPath = storage_path('temp/'.$filemd5);

编辑:

好的,我尝试了不同的方法,看起来类File是最简单的一种。

File::makeDirectory($path)

File::deleteDirectory($path)

有关创建目录删除目录的更多信息


sou*_*ner 4

也许您对目录没有足够的权限storage/app(我认为这是默认的)。检查一下,如果这不起作用,您可以随时调用 PHPexec函数(假设您使用的是 Linux):

exec('rm -r ' . storage_path() . '/' . $tempPath)

更新:问题是makeDirectory有第二个int参数,默认情况下将权限设置为(511-r-x--x--x读取和执行,但不写入)。解决方法是将第二个参数设置为711is -rwx--x--x,您将能够删除创建的目录。传递其他两个参数很有用,true因为它将递归地应用权限并强制执行操作。

正如亚历克斯所说,你必须使用File而不是Storage. 因此,创建稍后可以删除的目录的最终代码是:

File::makeDirectory($tempPath, 0711, true, true); 
Run Code Online (Sandbox Code Playgroud)