php 使用laravel实现Oracle存储时出错

svujldwt  于 2023-04-04  发布在  PHP
关注(0)|答案(1)|浏览(87)

我尝试使用https://medium.com/@hassan_omar/custom-laravel-filesystem-provider-for-oracle-object-storage-4b18ab2a140本教程将文件上传到Oracle对象存储(oci).所做的一切都是本教程所描述的.在我的laravel 8项目aws s3已经实现.我创建了一个Oracle云帐户,并创建了存储桶的凭据.
环境

FILESYSTEM=oci
OCI_ACCESS_KEY_ID=f1b11a17f30931b8f62bc******
OCI_SECRET_ACCESS_KEY=iIn4CKnKmE5/cuyIxz+*****YdYcSIBw=
OCI_DEFAULT_REGION=ap-hyderabad-1
OCI_BUCKET=my-oracle-bucket
OCI_URL="https://a***8ejkp17v.compat.objectstorage.ap-hyderabad-1.oraclecloud.com"

config/filesystems

'oci' => [
    'driver' => 's3',
    'key' => env('OCI_ACCESS_KEY_ID'),
    'secret' => env('OCI_SECRET_ACCESS_KEY'),
    'region' => env('OCI_DEFAULT_REGION'),
    'bucket' => env('OCI_BUCKET'),
    'url' => env('OCI_URL') .  '/'.  env('OCI_BUCKET'),
]

我在上传到oci的时候得到了这个错误

Error executing \"PutObject\" on \"https://my-oracle-bucket.ax****jkp17v.compat.objectstorage.ap-hyderabad-1.oraclecloud.com/my-oracle-bucket/20230325143057WrmOc.jpg\"; AWS HTTP error: cURL error 60: SSL: no alternative certificate subject name matches target host name 'my-oracle-bucket.a****jkp17v.compat.objectstorage.ap-hyderabad-1.oraclecloud.com' (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://my-oracle-bucket.a****ejkp17v.compat.objectstorage.ap-hyderabad-1.oraclecloud.com/my-oracle-bucket/20230325143057WrmOc.jpg
wfveoks0

wfveoks01#

这是因为S3Client通过在URL的开头附加桶名来内部构建请求URL,而OCI不支持。
我们可以通过在服务提供程序中将bucket_endpointuse_path_style_endpoint设置为true来禁用它
下面是代码示例

$client = new S3Client([
    'credentials' => [
        'key'    => $config['key'],
        'secret' => $config['secret'],
    ],
    'region' => $config['region'],
    'version' => '2006-03-01',
    'bucket_endpoint' => true,
    'use_path_style_endpoint' => true,
    'endpoint' => $config['url']
]);

相关问题