【问题标题】:Error trying to delete S3 directory (and contents) in Laravel 5.1尝试在 Laravel 5.1 中删除 S3 目录(和内容)时出错
【发布时间】:2015-10-15 14:43:16
【问题描述】:

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

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

第一个选项:Storage::disk('s3')->deleteDirectory(Auth::id());
错误:“已达到 '100' 的最大函数嵌套级别,正在中止!”
读数:https://gist.github.com/jackbarham/14fce68b51abe4eaadd2

第二个选项:Storage::deleteDirectory(Auth::id());
错误:“在整数上调用成员函数 delete()”
读数:https://gist.github.com/jackbarham/32dc6dc6c3d7f1b3c636

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

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

【问题讨论】:

  • 你能分享你收到的一个或两个错误的堆栈跟踪吗?您使用的是 Amazon SDK V2 还是 V3?
  • 谢谢 - 我用完整的错误读数更新了我的问题,我正在使用 V3
  • 你在使用 Clockwork 吗?
  • 不,我没有使用 Clockwork
  • 第二个选项 appears to be from your controller 的“调用整数成员函数 delete()”错误,可能与通过 Storage 门面删除文件无关。

标签: php laravel amazon-s3 laravel-5 storage


【解决方案1】:

(1)

第一个选项:Storage::disk('s3')->deleteDirectory(Auth::id());错误:“已达到 '100' 的最大函数嵌套级别,正在中止!”

这很棘手,因为问题不一定是由您的代码引起的。有一次这个错误,在我的情况下,托管我正在调用的 API 的服务器有负载问题。无法有效处理调用,因此出现了我这边的错误。

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

(2)

第二个选项:Storage::deleteDirectory(Auth::id());错误:“在整数上调用成员函数 delete()”

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

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

【讨论】:

  • 我已经在 laravel subreddit 上提供了你给他的第二个解决方案,但并没有解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
  • 2018-09-24
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
相关资源
最近更新 更多