【问题标题】:Laravel remove directoryLaravel 删除目录
【发布时间】:2016-04-11 21:29:51
【问题描述】:

当我尝试像这样在 Laravel 5.1 中删除目录时:

use Storage;

public function deleteUser(Request $request)
{
    $user = User::find($request->id); 
    Storage::deleteDirectory('/files/'.$user->id);
    $user->delete();
    $user->websites()->delete();
    return redirect('/')->with('status','Customer removed');
}

目录不会消失。但用户已成功删除。

这是文档:

https://laravel.com/docs/5.2/filesystem#deleting-files

为什么这不起作用?

【问题讨论】:

  • 首先检查删除该目录的权限。
  • 如果权限正确,我会说你的路径有问题。您可以尝试列出所有目录以查看您的路径是否正确。尝试$directories = Storage::directories('/files/');dd($directories)输出/files/内的所有目录
  • 如@ImtiazPabel 所述权限可能会导致问题。检查日志,看看您是否看到没有权限的错误。测试权限是否导致问题 chmod -R 777 files /
  • 我同意@SariYono 首先检查文件权限,您的项目错误日志。如果在您的项目日志中没有发现任何错误,请检查您的服务器错误日志。
  • 我遇到了同样的问题,先尝试清理目录。使用:存储::cleanDirectory($directory);存储之前::deleteDirectory();

标签: php laravel


【解决方案1】:
function deleteDirectory( $path ) {
     File::cleanDirectory( $path );
     Storage::deleteDirectory( $path );
     rmdir( $path );
}

【讨论】:

  • 在 laravel 5 中工作,请记住 Luke 的参数不正确,应该是 $path 以便在函数的其余部分使用。
【解决方案2】:

我也被 Storage:deleteDirectory 命令困住了。后来发现用下面的命令就可以轻松搞定:

use Illuminate\Support\Facades\File;File::deleteDirectory('/Users/zawad/web/storage/app/sleepdata/DirectoryToBeDeleted');

参数是要删除的目录的绝对路径。您可以在终端中运行pwd 命令找到路径的根目录。

【讨论】:

    猜你喜欢
    • 2017-07-04
    • 1970-01-01
    • 2016-07-25
    • 2016-09-30
    • 1970-01-01
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多