Путь URI с полномочиями должен начинаться с косой черты «/» или быть пустым. DigitalOcean Spaces AWS S3 SDK PHP

Произошла системная ошибка . Путь к URI с полномочиями должен начинаться с косой черты «/» или быть пустым. Автоматическое исправление URI путем добавления ведущей косой черты к пути устарело, начиная с версии 1.4, и вместо этого будет генерироваться исключение.
строка № 755
файл: /home/mySite/www/vendor/guzzlehttp/psr7/src/Uri.php
Версия PHP: 7.4.14
«Ошибка выполнения« PutObject »на« //mySite.nyc3.digitaloceanspaces.com/mySite.nyc3.digitaloceanspaces.com"; Ошибка HTTP AWS: Ошибка сервера: PUT http:\/\/mySite.nyc3.digitaloceanspaces.com\/mySite.nyc3.digitaloceanspaces.com привело к 501 Not Implemented ответ: \ n NotImplemented</Code>tx00000000000000c12754f-0060564e57-96 (truncated...)\n NotImplemented (server): - NotImplemented</Code>tx00000000000000c12754f-0060564e57-9617be5-nyc3c</RequestId>9617be5-nyc3c-nyc3-zg03</HostId></Error>"

Я не совсем понимаю эту ошибку, я пытался изменить запрос заголовка, я не знаю, что еще попробовать, в данный момент я пуст. Я также предположил, что проблема в заголовках. В настоящее время мой запрос заголовка выглядит так :: Authority
: mySite.com :method: POST
:path: /request.ajax.php
:scheme: https

Также оставлю соответствующие php-коды:

функция __construct($key, $secret_key, $space)
{
       $ this-> пробел = $ пробел;

       пытаться {
            $ this->client = new \Aws\S3\S3Client([
                'версия' => 'последняя',
                'region' => 'us-east-1',
                'endpoint' => 'nyc3.digitaloceanspaces.com',
                'учетные данные' => [
                    'key' => $key,
                    'secret' => $secret_key
                ],
            ]);
        } catch (\Exception $e) {
            вернуть $ e->getMessage();
        }
}

public _upload($path, $resource, $ctype)
{
        пытаться {
            $ this->client->putObject(массив (
                'Bucket' => $this-> пробел,
                'Key' => $path,
                'Body' => $resource,
                'ACL' => 'публичное чтение',
                ContentType => $ctype
            ));
        } catch (\Exception $e) {
            вернуть $ e->getMessage();
        }

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

часть, где я управляю файлом для загрузки:

$ path = "test/".basename($_FILES['файл']['имя']);
$ ctype = mime_content_type($_FILES['файл']['tmp_name']);
$ stream = fopen($_FILES['файл']['tmp_name'], 'r +');
$ out = $ xspaces-> upload_file($path, $stream, $ctype);
fclose($stream);

1 ответ

После прочтения этой статьи у меня возникла та же проблема, просто измените свой .env и добавьте протокол в конечную точку .

без протокола я получил ту же ошибку (неправильно)
DO_SPACES_ENDPOINT=sgp1.digitaloceanspaces.com

исправить, просто добавьте протокол в do_space (правильно)
DO_SPACES_ENDPOINT=https://sgp1.digitaloceanspaces.com

Другие вопросы по тегам