尝试删除 Laravel 5.1 中的 S3 目录(和内容)时出错

Error trying to delete S3 directory (and contents) in Laravel 5.1

我正在尝试删除包含任何先前文件夹或内容的整个目录。我可以删除上传、创建和删除单个文件,但在删除主文件夹时出错:

文件夹以 Auth::user id 开头,所以我希望在删除用户时删除 master 文件夹。

第一个选项:Storage::disk('s3')->deleteDirectory(Auth::id());
错误:"Maximum function nesting level of '100' reached, aborting!"
读数:https://gist.github.com/jackbarham/14fce68b51abe4eaadd2

第二个选项:Storage::deleteDirectory(Auth::id());
错误:"Call to a member function delete() on integer"
读数:https://gist.github.com/jackbarham/32dc6dc6c3d7f1b3c636

我一直在使用 Storage::disk('s3')->delete($path . $filename); 添加和删除单个文件,没有任何问题。

我正在使用 AWS SDK V3(根据 Laravel 文档)

(1)

First option: Storage::disk('s3')->deleteDirectory(Auth::id()); Error: "Maximum function nesting level of '100' reached, aborting!"

这个问题比较棘手,因为问题不一定是由您的代码引起的。有一次这个错误,在我的例子中,托管我调用的 API 的服务器有负载问题。无法有效处理呼叫,因此出现我这边的错误。

在这种情况下,您可以尝试将 php.ini 中的 xdebug.max_nesting_level100 增加到 200 - 然后重试。更多关于 属性 here.

(2)

Second option: Storage::deleteDirectory(Auth::id()); Error: "Call to a member function delete() on integer"

这个看起来更明显。 deleteDirectory() 将字符串作为第一个参数,而 Auth::id() 为您提供整数。将其转换为正确的类型:(string)Auth::id().

无论如何,希望更改 xdebug.max_nesting_level 值可以完成工作。