gpt4 book ai didi

php - 具有权限的 URI 的路径必须以斜杠 "/"开头或为空。 DigitalOcean Spaces AWS S3 SDK PHP

转载 作者:行者123 更新时间:2023-12-02 18:51:19 25 4
gpt4 key购买 nike

System error occurred

The path of a URI with an authority must start with a slash "/" or be empty.
Automagically fixing the URI by adding a leading slash to the path is
deprecated since version 1.4 and will throw an exception instead.
line#755 file: /home/mySite/www/vendor/guzzlehttp/psr7/src/Uri.php

PHP version: 7.4.14

Error executing "PutObject" on "//mySite.nyc3.digitaloceanspaces.com/mySite.nyc3.digitaloceanspaces.com";
AWS HTTP error:
Server error:
PUT http://mySite.nyc3.digitaloceanspaces.com/mySite.nyc3.digitaloceanspaces.com
resulted in a `501 Not Implemented` response:

<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>NotImplemented</Code>
<RequestId>tx00000000000000c12754f-0060564e57-96 (truncated...)
NotImplemented (server):
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>NotImplemented</Code>
<RequestId>tx00000000000000c12754f-0060564e57-9617be5-nyc3c</RequestId
<HostId>9617be5-nyc3c-nyc3-zg03</HostId>
</Error>"

我不完全理解这个错误,我已经尝试更改 header 请求,我不知道还能尝试什么,我现在一片空白。我还认为这是标题中的问题。目前我的 header 请求如下所示:

:authority: mySite.com
:method: POST
:path: /request.ajax.php
:scheme: https

我也会留下各自的php代码:

function __construct($key, $secret_key, $space)
{
$this->space = $space;

try {
$this->client = new \Aws\S3\S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'endpoint' => 'nyc3.digitaloceanspaces.com',
'credentials' => [
'key' => $key,
'secret' => $secret_key
],
]);
} catch (\Exception $e) {
return $e->getMessage();
}
}

public _upload($path, $resource, $ctype)
{
try {
$this->client->putObject(array(
'Bucket' => $this->space,
'Key' => $path,
'Body' => $resource,
'ACL' => 'public-read',
'ContentType' => $ctype
));
} catch (\Exception $e) {
return $e->getMessage();
}

return array("status" => "Success.");
}

我管理上传文件的部分:

$path = "test/".basename($_FILES['file']['name']);
$ctype = mime_content_type($_FILES['file']['tmp_name']);
$stream = fopen($_FILES['file']['tmp_name'], 'r+');
$out = $xspaces->_upload($path, $stream, $ctype);
fclose($stream);

最佳答案

关注后this article ,我有同样的问题,只需更改您的 .env 并将协议(protocol)添加到 endpoint

没有协议(protocol)我得到同样的错误(错误)
DO_SPACES_ENDPOINT=sgp1.digitaloceanspaces.com

修复只是将协议(protocol)添加到 do_space (正确)
DO_SPACES_ENDPOINT=https://sgp1.digitaloceanspaces.com

关于php - 具有权限的 URI 的路径必须以斜杠 "/"开头或为空。 DigitalOcean Spaces AWS S3 SDK PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66726112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com