Unable to show uploaded avatars and images #1393

Closed
opened 2026-02-05 00:46:37 +03:00 by OVERLORD · 6 comments
Owner

Originally created by @mzch on GitHub (Oct 8, 2019).

Describe the bug
When uploading an avatar or an image to s3 compatible storage, Bookstack shows an empty image.

Steps To Reproduce
Steps to reproduce the behavior:

  1. Click on 'SELECT IMAGE' on the preference page.
  2. Confirmed to display the right image.
  3. Click 'SAVE' button.
  4. The empty image is shown.

Expected behavior
Uploaded image is shown.

Screenshots

  1. Before uploading: https://d.pr/f/kt2Xu9
  2. Right after uploading: https://d.pr/f/Hr5Jnm
  3. After uploading: https://d.pr/f/qQi3kG

Your Configuration (please complete the following information):

  • Exact BookStack Version (Found in settings): v0.27.4
  • PHP Version: 7.3
  • Hosting Method (Nginx/Apache/Docker): Apache

Additional context
All images uploaded are not shown other than avatars. I tried to upload avatars and images to s3 and local_secure, but the result is the same.

Originally created by @mzch on GitHub (Oct 8, 2019). **Describe the bug** When uploading an avatar or an image to s3 compatible storage, Bookstack shows an empty image. **Steps To Reproduce** Steps to reproduce the behavior: 1. Click on 'SELECT IMAGE' on the preference page. 2. Confirmed to display the right image. 3. Click 'SAVE' button. 4. The empty image is shown. **Expected behavior** Uploaded image is shown. **Screenshots** 1. Before uploading: https://d.pr/f/kt2Xu9 2. Right after uploading: https://d.pr/f/Hr5Jnm 3. After uploading: https://d.pr/f/qQi3kG **Your Configuration (please complete the following information):** - Exact BookStack Version (Found in settings): v0.27.4 - PHP Version: 7.3 - Hosting Method (Nginx/Apache/Docker): Apache **Additional context** All images uploaded are not shown other than avatars. I tried to upload avatars and images to s3 and local_secure, but the result is the same.
OVERLORD added the 🐕 Support label 2026-02-05 00:46:37 +03:00
Author
Owner

@ssddanbrown commented on GitHub (Oct 9, 2019):

Hi @mzch,
Sorry to hear you are having issues.

When selecting and saving an avatar does the file get created in your selected storage destination? Do you have any luck when using just the 'local` storage option?

@ssddanbrown commented on GitHub (Oct 9, 2019): Hi @mzch, Sorry to hear you are having issues. When selecting and saving an avatar does the file get created in your selected storage destination? Do you have any luck when using just the 'local` storage option?
Author
Owner

@mzch commented on GitHub (Oct 9, 2019):

Hi @ssddanbrown,
Yes, the image was saved on S3 (Compatible storage). When specified local_secure, it was also saved on the right place. When using 'local' option, the image is shown correctly.

@mzch commented on GitHub (Oct 9, 2019): Hi @ssddanbrown, Yes, the image was saved on S3 (Compatible storage). When specified local_secure, it was also saved on the right place. When using 'local' option, the image is shown correctly.
Author
Owner

@John-OShea-Wordbank commented on GitHub (Jan 12, 2020):

Hi @ssddanbrown,
We're seeing the same thing and it looks to be related to the STORAGE_S3_REGION .env variable.

With it set to us-east-1, I can see the file uploaded to the correct bucket location and get set to public access. There are no exceptions thrown, either uploading or afterwards, but the image doesn't get shown after that. Subsequent requests for the file are to

https://s3-us-east-1.amazonaws.com/OUR_BUCKET_NAME/uploads/images/user/2020-01/thumbs-80-80/john_256x256.jpg

but the correct URL should be

https://s3.amazonaws.com/OUR_BUCKET_NAME/uploads/images/user/2020-01/thumbs-80-80/john_256x256.jpg (i.e. no region name as part of the hostname)

Removing the STORAGE_S3_REGION setting entirely or setting it to an empty string throws an exception on upload:

"Error executing "ListObjects" on "https://s3.your-region.amazonaws.com/OUR_BUCKET_NAME?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url"; AWS HTTP error: cURL error 6: Could not resolve host: s3.your-region.amazonaws.com ...

"Error executing "ListObjects" on "https://s3..amazonaws.com/OUR_BUCKET_NAME?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url"; AWS HTTP error: cURL error 6: Could not resolve host: s3..amazonaws.com ...

Hope that helps!

@John-OShea-Wordbank commented on GitHub (Jan 12, 2020): Hi @ssddanbrown, We're seeing the same thing and it _looks_ to be related to the `STORAGE_S3_REGION` .env variable. With it set to `us-east-1`, I can see the file uploaded to the correct bucket location and get set to public access. There are no exceptions thrown, either uploading or afterwards, but the image doesn't get shown after that. Subsequent requests for the file are to `https://s3-us-east-1.amazonaws.com/OUR_BUCKET_NAME/uploads/images/user/2020-01/thumbs-80-80/john_256x256.jpg` but the correct URL should be `https://s3.amazonaws.com/OUR_BUCKET_NAME/uploads/images/user/2020-01/thumbs-80-80/john_256x256.jpg` (i.e. no region name as part of the hostname) Removing the STORAGE_S3_REGION setting entirely or setting it to an empty string throws an exception on upload: ``` "Error executing "ListObjects" on "https://s3.your-region.amazonaws.com/OUR_BUCKET_NAME?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url"; AWS HTTP error: cURL error 6: Could not resolve host: s3.your-region.amazonaws.com ... "Error executing "ListObjects" on "https://s3..amazonaws.com/OUR_BUCKET_NAME?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url"; AWS HTTP error: cURL error 6: Could not resolve host: s3..amazonaws.com ... ``` Hope that helps!
Author
Owner

@mzch commented on GitHub (Jan 12, 2020):

When I removed STORAGE_S3_REGION, BookStack reported 'An Error Occurred'

  • laravel.log
[2020-01-12 23:25:54] production.ERROR: Error executing "ListObjects" on "https://sssforme.com/bookstack?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url"; AWS HTTP error: Client error: `GET https://sssforme.com/bookstack?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url` resulted in a `400 Bad Request` response:
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header (truncated...)
 AuthorizationHeaderMalformed (client): The authorization header is malformed; the region is wrong; expecting 'us-east-1'. - <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header is malformed; the region is wrong; expecting &#39;us-east-1&#39;.</Message><BucketName>bookstack</BucketName><Resource>/bookstack</Resource><Region>us-east-1</Region><RequestId>15E929D87D693AD7</RequestId><HostId>7e2e83e2-79d2-48cc-af3f-768e445900c2</HostId></Error> {"userId":1,"email":"mzch@mzch.org","exception":"[object] (Aws\\S3\\Exception\\S3Exception(code: 0): Error executing \"ListObjects\" on \"https://sssforme.com/bookstack?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url\"; AWS HTTP error: Client error: `GET https://sssforme.com/bookstack?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url` resulted in a `400 Bad Request` response:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header (truncated...)
 AuthorizationHeaderMalformed (client): The authorization header is malformed; the region is wrong; expecting 'us-east-1'. - <?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header is malformed; the region is wrong; expecting &#39;us-east-1&#39;.</Message><BucketName>bookstack</BucketName><Resource>/bookstack</Resource><Region>us-east-1</Region><RequestId>15E929D87D693AD7</RequestId><HostId>7e2e83e2-79d2-48cc-af3f-768e445900c2</HostId></Error> at /srv/BookStack/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php:191, GuzzleHttp\\Exception\\ClientException(code: 400): Client error: `GET https://sssforme.com/bookstack?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url` resulted in a `400 Bad Request` response:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header (truncated...)
 at /srv/BookStack/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113)
[stacktrace]
#0 /srv/BookStack/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php(97): Aws\\WrappedHttpHandler->parseError(Array, Object(GuzzleHttp\\Psr7\\Request), Object(Aws\\Command), Array)
#1 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(203): Aws\\WrappedHttpHandler->Aws\\{closure}(Array)
#2 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(174): GuzzleHttp\\Promise\\Promise::callHandler(2, Array, Array)
#3 /srv/BookStack/vendor/guzzlehttp/promises/src/RejectedPromise.php(40): GuzzleHttp\\Promise\\Promise::GuzzleHttp\\Promise\\{closure}(Array)
#4 /srv/BookStack/vendor/guzzlehttp/promises/src/TaskQueue.php(47): GuzzleHttp\\Promise\\RejectedPromise::GuzzleHttp\\Promise\\{closure}()
#5 /srv/BookStack/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(98): GuzzleHttp\\Promise\\TaskQueue->run()
#6 /srv/BookStack/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(125): GuzzleHttp\\Handler\\CurlMultiHandler->tick()
#7 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(246): GuzzleHttp\\Handler\\CurlMultiHandler->execute(true)
#8 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(223): GuzzleHttp\\Promise\\Promise->invokeWaitFn()
#9 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(267): GuzzleHttp\\Promise\\Promise->waitIfPending()
#10 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(225): GuzzleHttp\\Promise\\Promise->invokeWaitList()
#11 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(267): GuzzleHttp\\Promise\\Promise->waitIfPending()
#12 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(225): GuzzleHttp\\Promise\\Promise->invokeWaitList()
#13 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(62): GuzzleHttp\\Promise\\Promise->waitIfPending()
#14 /srv/BookStack/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(58): GuzzleHttp\\Promise\\Promise->wait()
#15 /srv/BookStack/vendor/aws/aws-sdk-php/src/ResultPaginator.php(127): Aws\\AwsClient->execute(Object(Aws\\Command))
#16 /srv/BookStack/vendor/league/flysystem-aws-s3-v3/src/AwsS3Adapter.php(293): Aws\\ResultPaginator->valid()
#17 /srv/BookStack/vendor/league/flysystem-aws-s3-v3/src/AwsS3Adapter.php(276): League\\Flysystem\\AwsS3v3\\AwsS3Adapter->retrievePaginatedListing(Array)
#18 /srv/BookStack/vendor/league/flysystem/src/Filesystem.php(271): League\\Flysystem\\AwsS3v3\\AwsS3Adapter->listContents('uploads/images/...', true)
#19 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php(544): League\\Flysystem\\Filesystem->listContents('uploads/images/...', true)
#20 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php(557): Illuminate\\Filesystem\\FilesystemAdapter->files('/uploads/images...', true)
#21 /srv/BookStack/app/Uploads/ImageService.php(295): Illuminate\\Filesystem\\FilesystemAdapter->allFiles('/uploads/images...')
#22 /srv/BookStack/app/Uploads/ImageService.php(279): BookStack\\Uploads\\ImageService->destroyImagesFromPath('/uploads/images...')
#23 /srv/BookStack/app/Uploads/ImageRepo.php(204): BookStack\\Uploads\\ImageService->destroy(Object(BookStack\\Uploads\\Image))
#24 /srv/BookStack/app/Http/Controllers/UserController.php(193): BookStack\\Uploads\\ImageRepo->destroyImage(Object(BookStack\\Uploads\\Image))
#25 [internal function]: BookStack\\Http\\Controllers\\UserController->update(Object(BookStack\\Http\\Request), '1')
#26 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array)
#27 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('update', Array)
#28 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(BookStack\\Http\\Controllers\\UserController), 'update')
#29 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(169): Illuminate\\Routing\\Route->runController()
#30 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(658): Illuminate\\Routing\\Route->run()
#31 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#32 /srv/BookStack/app/Http/Controllers/Controller.php(44): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#33 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(131): BookStack\\Http\\Controllers\\Controller->BookStack\\Http\\Controllers\\{closure}(Object(BookStack\\Http\\Request), Object(Closure))
#34 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#35 /srv/BookStack/app/Http/Middleware/Authenticate.php(48): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#36 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): BookStack\\Http\\Middleware\\Authenticate->handle(Object(BookStack\\Http\\Request), Object(Closure))
#37 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#38 /srv/BookStack/app/Http/Middleware/Localization.php(70): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#39 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): BookStack\\Http\\Middleware\\Localization->handle(Object(BookStack\\Http\\Request), Object(Closure))
#40 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#41 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#42 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(BookStack\\Http\\Request), Object(Closure))
#43 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#44 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(68): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#45 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(BookStack\\Http\\Request), Object(Closure))
#46 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#47 /srv/BookStack/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#48 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(BookStack\\Http\\Request), Object(Closure))
#49 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#50 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#51 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Session\\Middleware\\StartSession->handle(Object(BookStack\\Http\\Request), Object(Closure))
#52 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#53 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#54 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(BookStack\\Http\\Request), Object(Closure))
#55 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#56 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#57 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(BookStack\\Http\\Request), Object(Closure))
#58 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#59 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#60 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(660): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#61 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(635): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(BookStack\\Http\\Request))
#62 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(601): Illuminate\\Routing\\Router->runRoute(Object(BookStack\\Http\\Request), Object(Illuminate\\Routing\\Route))
#63 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(590): Illuminate\\Routing\\Router->dispatchToRoute(Object(BookStack\\Http\\Request))
#64 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Routing\\Router->dispatch(Object(BookStack\\Http\\Request))
#65 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(BookStack\\Http\\Request))
#66 /srv/BookStack/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(58): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#67 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle(Object(BookStack\\Http\\Request), Object(Closure))
#68 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#69 /srv/BookStack/vendor/fideloper/proxy/src/TrustProxies.php(56): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#70 /srv/BookStack/app/Http/Middleware/TrustProxies.php(45): Fideloper\\Proxy\\TrustProxies->handle(Object(BookStack\\Http\\Request), Object(Closure))
#71 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): BookStack\\Http\\Middleware\\TrustProxies->handle(Object(BookStack\\Http\\Request), Object(Closure))
#72 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#73 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#74 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(BookStack\\Http\\Request), Object(Closure))
#75 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#76 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#77 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(BookStack\\Http\\Request), Object(Closure))
#78 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#79 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#80 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(BookStack\\Http\\Request), Object(Closure))
#81 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request))
#82 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request))
#83 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#84 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(BookStack\\Http\\Request))
#85 /srv/BookStack/public/index.php(54): Illuminate\\Foundation\\Http\\Kernel->handle(Object(BookStack\\Http\\Request))
#86 {main}
"}

When adding STORAGE_S3_REGION=us-east-1, no error was recorded, but no image was shown.

@mzch commented on GitHub (Jan 12, 2020): When I removed `STORAGE_S3_REGION`, BookStack reported 'An Error Occurred' - `laravel.log` ``` [2020-01-12 23:25:54] production.ERROR: Error executing "ListObjects" on "https://sssforme.com/bookstack?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url"; AWS HTTP error: Client error: `GET https://sssforme.com/bookstack?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url` resulted in a `400 Bad Request` response: <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header (truncated...) AuthorizationHeaderMalformed (client): The authorization header is malformed; the region is wrong; expecting 'us-east-1'. - <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header is malformed; the region is wrong; expecting &#39;us-east-1&#39;.</Message><BucketName>bookstack</BucketName><Resource>/bookstack</Resource><Region>us-east-1</Region><RequestId>15E929D87D693AD7</RequestId><HostId>7e2e83e2-79d2-48cc-af3f-768e445900c2</HostId></Error> {"userId":1,"email":"mzch@mzch.org","exception":"[object] (Aws\\S3\\Exception\\S3Exception(code: 0): Error executing \"ListObjects\" on \"https://sssforme.com/bookstack?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url\"; AWS HTTP error: Client error: `GET https://sssforme.com/bookstack?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url` resulted in a `400 Bad Request` response: <?xml version=\"1.0\" encoding=\"UTF-8\"?> <Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header (truncated...) AuthorizationHeaderMalformed (client): The authorization header is malformed; the region is wrong; expecting 'us-east-1'. - <?xml version=\"1.0\" encoding=\"UTF-8\"?> <Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header is malformed; the region is wrong; expecting &#39;us-east-1&#39;.</Message><BucketName>bookstack</BucketName><Resource>/bookstack</Resource><Region>us-east-1</Region><RequestId>15E929D87D693AD7</RequestId><HostId>7e2e83e2-79d2-48cc-af3f-768e445900c2</HostId></Error> at /srv/BookStack/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php:191, GuzzleHttp\\Exception\\ClientException(code: 400): Client error: `GET https://sssforme.com/bookstack?prefix=uploads%2Fimages%2Fuser%2F2020-01%2F&encoding-type=url` resulted in a `400 Bad Request` response: <?xml version=\"1.0\" encoding=\"UTF-8\"?> <Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header (truncated...) at /srv/BookStack/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113) [stacktrace] #0 /srv/BookStack/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php(97): Aws\\WrappedHttpHandler->parseError(Array, Object(GuzzleHttp\\Psr7\\Request), Object(Aws\\Command), Array) #1 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(203): Aws\\WrappedHttpHandler->Aws\\{closure}(Array) #2 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(174): GuzzleHttp\\Promise\\Promise::callHandler(2, Array, Array) #3 /srv/BookStack/vendor/guzzlehttp/promises/src/RejectedPromise.php(40): GuzzleHttp\\Promise\\Promise::GuzzleHttp\\Promise\\{closure}(Array) #4 /srv/BookStack/vendor/guzzlehttp/promises/src/TaskQueue.php(47): GuzzleHttp\\Promise\\RejectedPromise::GuzzleHttp\\Promise\\{closure}() #5 /srv/BookStack/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(98): GuzzleHttp\\Promise\\TaskQueue->run() #6 /srv/BookStack/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(125): GuzzleHttp\\Handler\\CurlMultiHandler->tick() #7 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(246): GuzzleHttp\\Handler\\CurlMultiHandler->execute(true) #8 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(223): GuzzleHttp\\Promise\\Promise->invokeWaitFn() #9 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(267): GuzzleHttp\\Promise\\Promise->waitIfPending() #10 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(225): GuzzleHttp\\Promise\\Promise->invokeWaitList() #11 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(267): GuzzleHttp\\Promise\\Promise->waitIfPending() #12 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(225): GuzzleHttp\\Promise\\Promise->invokeWaitList() #13 /srv/BookStack/vendor/guzzlehttp/promises/src/Promise.php(62): GuzzleHttp\\Promise\\Promise->waitIfPending() #14 /srv/BookStack/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(58): GuzzleHttp\\Promise\\Promise->wait() #15 /srv/BookStack/vendor/aws/aws-sdk-php/src/ResultPaginator.php(127): Aws\\AwsClient->execute(Object(Aws\\Command)) #16 /srv/BookStack/vendor/league/flysystem-aws-s3-v3/src/AwsS3Adapter.php(293): Aws\\ResultPaginator->valid() #17 /srv/BookStack/vendor/league/flysystem-aws-s3-v3/src/AwsS3Adapter.php(276): League\\Flysystem\\AwsS3v3\\AwsS3Adapter->retrievePaginatedListing(Array) #18 /srv/BookStack/vendor/league/flysystem/src/Filesystem.php(271): League\\Flysystem\\AwsS3v3\\AwsS3Adapter->listContents('uploads/images/...', true) #19 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php(544): League\\Flysystem\\Filesystem->listContents('uploads/images/...', true) #20 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php(557): Illuminate\\Filesystem\\FilesystemAdapter->files('/uploads/images...', true) #21 /srv/BookStack/app/Uploads/ImageService.php(295): Illuminate\\Filesystem\\FilesystemAdapter->allFiles('/uploads/images...') #22 /srv/BookStack/app/Uploads/ImageService.php(279): BookStack\\Uploads\\ImageService->destroyImagesFromPath('/uploads/images...') #23 /srv/BookStack/app/Uploads/ImageRepo.php(204): BookStack\\Uploads\\ImageService->destroy(Object(BookStack\\Uploads\\Image)) #24 /srv/BookStack/app/Http/Controllers/UserController.php(193): BookStack\\Uploads\\ImageRepo->destroyImage(Object(BookStack\\Uploads\\Image)) #25 [internal function]: BookStack\\Http\\Controllers\\UserController->update(Object(BookStack\\Http\\Request), '1') #26 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array) #27 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('update', Array) #28 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(BookStack\\Http\\Controllers\\UserController), 'update') #29 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(169): Illuminate\\Routing\\Route->runController() #30 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(658): Illuminate\\Routing\\Route->run() #31 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #32 /srv/BookStack/app/Http/Controllers/Controller.php(44): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #33 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(131): BookStack\\Http\\Controllers\\Controller->BookStack\\Http\\Controllers\\{closure}(Object(BookStack\\Http\\Request), Object(Closure)) #34 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #35 /srv/BookStack/app/Http/Middleware/Authenticate.php(48): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #36 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): BookStack\\Http\\Middleware\\Authenticate->handle(Object(BookStack\\Http\\Request), Object(Closure)) #37 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #38 /srv/BookStack/app/Http/Middleware/Localization.php(70): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #39 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): BookStack\\Http\\Middleware\\Localization->handle(Object(BookStack\\Http\\Request), Object(Closure)) #40 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #41 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #42 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(BookStack\\Http\\Request), Object(Closure)) #43 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #44 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(68): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #45 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(BookStack\\Http\\Request), Object(Closure)) #46 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #47 /srv/BookStack/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #48 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(BookStack\\Http\\Request), Object(Closure)) #49 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #50 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #51 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Session\\Middleware\\StartSession->handle(Object(BookStack\\Http\\Request), Object(Closure)) #52 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #53 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #54 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(BookStack\\Http\\Request), Object(Closure)) #55 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #56 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #57 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(BookStack\\Http\\Request), Object(Closure)) #58 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #59 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #60 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(660): Illuminate\\Pipeline\\Pipeline->then(Object(Closure)) #61 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(635): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(BookStack\\Http\\Request)) #62 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(601): Illuminate\\Routing\\Router->runRoute(Object(BookStack\\Http\\Request), Object(Illuminate\\Routing\\Route)) #63 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(590): Illuminate\\Routing\\Router->dispatchToRoute(Object(BookStack\\Http\\Request)) #64 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Routing\\Router->dispatch(Object(BookStack\\Http\\Request)) #65 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(BookStack\\Http\\Request)) #66 /srv/BookStack/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(58): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #67 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle(Object(BookStack\\Http\\Request), Object(Closure)) #68 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #69 /srv/BookStack/vendor/fideloper/proxy/src/TrustProxies.php(56): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #70 /srv/BookStack/app/Http/Middleware/TrustProxies.php(45): Fideloper\\Proxy\\TrustProxies->handle(Object(BookStack\\Http\\Request), Object(Closure)) #71 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): BookStack\\Http\\Middleware\\TrustProxies->handle(Object(BookStack\\Http\\Request), Object(Closure)) #72 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #73 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #74 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(BookStack\\Http\\Request), Object(Closure)) #75 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #76 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #77 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(BookStack\\Http\\Request), Object(Closure)) #78 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #79 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #80 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(BookStack\\Http\\Request), Object(Closure)) #81 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(BookStack\\Http\\Request)) #82 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(BookStack\\Http\\Request)) #83 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\\Pipeline\\Pipeline->then(Object(Closure)) #84 /srv/BookStack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(BookStack\\Http\\Request)) #85 /srv/BookStack/public/index.php(54): Illuminate\\Foundation\\Http\\Kernel->handle(Object(BookStack\\Http\\Request)) #86 {main} "} ``` When adding `STORAGE_S3_REGION=us-east-1`, no error was recorded, but no image was shown.
Author
Owner

@John-OShea-Wordbank commented on GitHub (Jan 20, 2020):

My original comment was incorrect - sorry for the confusion. Replacing the first hyphen with a full stop seems to be working OK for us (we need to do more testing to confirm though).

Non-working URL format:

https://s3-us-east-1.amazonaws.com/OUR_BUCKET_NAME/uploads/images/user/2020-01/thumbs-80-80/john_256x256.jpg

Working URL format:

https://s3.us-east-1.amazonaws.com/OUR_BUCKET_NAME/uploads/images/user/2020-01/thumbs-80-80/john_256x256.jpg

The line we amended

@John-OShea-Wordbank commented on GitHub (Jan 20, 2020): My original comment was incorrect - sorry for the confusion. Replacing the first hyphen with a full stop _seems_ to be working OK for us (we need to do more testing to confirm though). Non-working URL format: `https://s3-us-east-1.amazonaws.com/OUR_BUCKET_NAME/uploads/images/user/2020-01/thumbs-80-80/john_256x256.jpg` Working URL format: `https://s3.us-east-1.amazonaws.com/OUR_BUCKET_NAME/uploads/images/user/2020-01/thumbs-80-80/john_256x256.jpg` [The line we amended](https://github.com/BookStackApp/BookStack/blob/82a8db373961d89ab1c9a3736ba5fc467fe2e03d/app/Uploads/ImageService.php#L481)
Author
Owner

@ssddanbrown commented on GitHub (May 2, 2021):

Since the last comment on this issue is relatively old I'm going to close this. If the issue remains and is something you still require to be fixed please open a new issue, referencing this one.

@ssddanbrown commented on GitHub (May 2, 2021): Since the last comment on this issue is relatively old I'm going to close this. If the issue remains and is something you still require to be fixed please open a new issue, referencing this one.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/BookStack#1393