Путь 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