我有一个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 conf文件中引用了它们,当我运行phpinfo()时,我可以看到我在创建证书时输入的所有本地主机证书数据,因此看起来php知道证书。
3条答案
按热度按时间alen0pnh1#
事实证明,我需要做以下事情:
casert. pem-----------------------
cbjzeqam2#
如果其他人也有同样的问题,但上述解决方案并没有为您解决:
我在升级到Laravel 9后也遇到了同样的错误。原来我们传递了
$variable = false
到Resource::cloud()->exists($variable)
检查,在最新版本中不再支持。所以一件好事是仔细检查你是否将支持的值传递到这个函数中。mwngjboj3#
在我的dockerfile中,我添加了这一行: