我有一个laravel项目,我刚刚升级了从8.x到最新的9.x。作为升级的一部分,它还需要许多其他的组件,如文件系统(我猜称为flysystem),也要从1.x升级到3.x。我有一行代码正在导致我的系统崩溃:
if (Storage::disk($disk)->exists($avatarFilename)) {
这种方法以前一直有效,但现在又回来了:
ERROR: Unable to check existence for: avatars/31-feea15debc.png
[stacktrace]
#0 D:\\vhosts\\vendor\\league\\flysystem-aws-s3-v3\\AwsS3V3Adapter.php(157): League\\Flysystem\\UnableToCheckExistence::forLocation('avatars/31-feea...', Object(Aws\\S3\\Exception\\S3Exception))
#1 D:\\vhosts\\vendor\\league\\flysystem\\src\\Filesystem.php(48): League\\Flysystem\\AwsS3V3\\AwsS3V3Adapter->directoryExists('avatars/31-feea...')
#2 D:\\vhosts\\vendor\\laravel\\framework\\src\\Illuminate\\Filesystem\\FilesystemAdapter.php(174): League\\Flysystem\\Filesystem->has('avatars/31-feea...')
#3 D:\\vhosts\\app\\Models\\User.php(1120): Illuminate\\Filesystem\\FilesystemAdapter->exists('avatars/31-feea...')
#4 D:\\vhosts\\scoutek.com\\storage\\framework\\views\\eb5469bb9d755dff931d80dd79d9a76a9a7a2a21.php(10): App\\Models\\User->getAvatar()
在深入挖掘了我的Laravel日志文件中报告的数千行代码之后,我发现了以下内容,这似乎是导致异常的原因:
(Aws\\S3\\Exception\\S3Exception(code: 0): Error executing
\"ListObjects\" on
\"https://scoutek-development.s3.amazonaws.com/?prefix=avatars%2F31-feea15debc.png%2F&max-keys=1&delimiter=%2F&encoding-type=url\";
AWS HTTP error: cURL error 60: SSL certificate problem:
unable to get local issuer certificate
(see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for
我使用了OpenSSL并创建了我的密钥和证书文件,并在apache文件中引用了它们。当我运行phpinfo()时,我可以看到我在创建证书时输入的所有本地主机证书数据,因此它看起来是知道证书的。我运行的是WAMP 3.2.3,PHP8.1.5,Apache2.4.46
发布于 2022-08-17 11:26:56
如果其他人有同样的问题,但上面的解决方案并没有为您解决这个问题:
在升级到Laravel 9之后,我也遇到了同样的错误。结果,我们把$variable = false
传递给了Resource::cloud()->exists($variable)
检查,这在最新版本中已经不再支持了。因此,一件好的事情是反复检查是否将一个受支持的值传递到这个函数中。
https://stackoverflow.com/questions/71877015
复制相似问题