[GH-ISSUE #1794] Saving avatar in a fresh instance fails with server 500 #993

Closed
opened 2026-02-26 02:34:51 +03:00 by kerem · 6 comments
Owner

Originally created by @gramakri on GitHub (Jul 16, 2024).
Original GitHub issue: https://github.com/koel/koel/issues/1794

Describe the bug
Saving avatar in a fresh instance fails with server 500

To reproduce
Steps to reproduce the behavior:

  1. Install Koel (I am using Cloudron)
  2. Update Avatar
  3. Shows 'Server Error'

Expected behavior
Avatar should be saved

Screenshots
image

Environment

  • Koel 7.0.6
  • OS: Cloudron/Docker
  • Browser Firefox
  • PHP version 8.1.2
  • Node version 18.18.0

Additional context
Add any other context about the problem here.

Originally created by @gramakri on GitHub (Jul 16, 2024). Original GitHub issue: https://github.com/koel/koel/issues/1794 **Describe the bug** Saving avatar in a fresh instance fails with server 500 **To reproduce** Steps to reproduce the behavior: 1. Install Koel (I am using Cloudron) 2. Update Avatar 3. Shows 'Server Error' **Expected behavior** Avatar should be saved **Screenshots** ![image](https://github.com/user-attachments/assets/520ee7a4-b4e1-45cd-be4c-05ae6482112f) **Environment** - Koel 7.0.6 - OS: Cloudron/Docker - Browser Firefox - PHP version 8.1.2 - Node version 18.18.0 **Additional context** Add any other context about the problem here.
kerem closed this issue 2026-02-26 02:34:51 +03:00
Author
Owner

@gramakri commented on GitHub (Jul 16, 2024):

The exception:

[2024-07-16 11:35:33] production.ERROR: Can't write image data to path (/app/code/public/img/avatars/3355d109ff9bae42fc10e24d2731933ea8a90aed.webp) {"userId":1,"exception":"[object] (Intervention\\Image\\Exception\\NotWritableException(code: 0): Can't write image data to path (/app/code/public/img/avatars/3355d109ff9bae42fc10e24d2731933ea8a90aed.webp) at /app/code/vendor/intervention/image/src/Intervention/Image/Image.php:150)
[stacktrace]
#0 /app/code/app/Services/ImageWriter.php(43): Intervention\\Image\\Image->save()
#1 /app/code/app/Services/UserService.php(112): App\\Services\\ImageWriter->write()
#2 /app/code/app/Services/UserService.php(95): App\\Services\\UserService->createNewAvatar()
#3 /app/code/app/Http/Controllers/API/ProfileController.php(48): App\\Services\\UserService->updateUser()
#4 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\API\\ProfileController->update()
#5 /app/code/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\\Routing\\Controller->callAction()
#6 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Route.php(260): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#7 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
#8 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php(806): Illuminate\\Routing\\Route->run()
#9 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#10 /app/code/app/Http/Middleware/Authenticate.php(14): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#11 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\\Http\\Middleware\\Authenticate->handle()
#12 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#13 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#14 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(159): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#15 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(95): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequest()
#16 /app/code/app/Http/Middleware/ThrottleRequests.php(14): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle()
#17 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\\Http\\Middleware\\ThrottleRequests->handle()
#18 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#19 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\\Pipeline\\Pipeline->then()
#20 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php(784): Illuminate\\Routing\\Router->runRouteWithinStack()
#21 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php(748): Illuminate\\Routing\\Router->runRoute()
#22 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php(737): Illuminate\\Routing\\Router->dispatchToRoute()
#23 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\\Routing\\Router->dispatch()
#24 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#25 /app/code/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustHosts.php(48): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#26 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Http\\Middleware\\TrustHosts->handle()
#27 /app/code/app/Http/Middleware/ForceHttps.php(28): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#28 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\\Http\\Middleware\\ForceHttps->handle()
#29 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#30 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#31 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#32 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#33 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
#34 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(99): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#35 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#36 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#37 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\\Pipeline\\Pipeline->then()
#38 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#39 /app/code/public/index.php(57): Illuminate\\Foundation\\Http\\Kernel->handle()
#40 {main}
"} 
<!-- gh-comment-id:2230680894 --> @gramakri commented on GitHub (Jul 16, 2024): The exception: ``` [2024-07-16 11:35:33] production.ERROR: Can't write image data to path (/app/code/public/img/avatars/3355d109ff9bae42fc10e24d2731933ea8a90aed.webp) {"userId":1,"exception":"[object] (Intervention\\Image\\Exception\\NotWritableException(code: 0): Can't write image data to path (/app/code/public/img/avatars/3355d109ff9bae42fc10e24d2731933ea8a90aed.webp) at /app/code/vendor/intervention/image/src/Intervention/Image/Image.php:150) [stacktrace] #0 /app/code/app/Services/ImageWriter.php(43): Intervention\\Image\\Image->save() #1 /app/code/app/Services/UserService.php(112): App\\Services\\ImageWriter->write() #2 /app/code/app/Services/UserService.php(95): App\\Services\\UserService->createNewAvatar() #3 /app/code/app/Http/Controllers/API/ProfileController.php(48): App\\Services\\UserService->updateUser() #4 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\API\\ProfileController->update() #5 /app/code/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\\Routing\\Controller->callAction() #6 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Route.php(260): Illuminate\\Routing\\ControllerDispatcher->dispatch() #7 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController() #8 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php(806): Illuminate\\Routing\\Route->run() #9 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}() #10 /app/code/app/Http/Middleware/Authenticate.php(14): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #11 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\\Http\\Middleware\\Authenticate->handle() #12 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #13 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle() #14 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(159): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #15 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(95): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequest() #16 /app/code/app/Http/Middleware/ThrottleRequests.php(14): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle() #17 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\\Http\\Middleware\\ThrottleRequests->handle() #18 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #19 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\\Pipeline\\Pipeline->then() #20 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php(784): Illuminate\\Routing\\Router->runRouteWithinStack() #21 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php(748): Illuminate\\Routing\\Router->runRoute() #22 /app/code/vendor/laravel/framework/src/Illuminate/Routing/Router.php(737): Illuminate\\Routing\\Router->dispatchToRoute() #23 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\\Routing\\Router->dispatch() #24 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}() #25 /app/code/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustHosts.php(48): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #26 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Http\\Middleware\\TrustHosts->handle() #27 /app/code/app/Http/Middleware/ForceHttps.php(28): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #28 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\\Http\\Middleware\\ForceHttps->handle() #29 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #30 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle() #31 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle() #32 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #33 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle() #34 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(99): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #35 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle() #36 /app/code/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}() #37 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\\Pipeline\\Pipeline->then() #38 /app/code/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter() #39 /app/code/public/index.php(57): Illuminate\\Foundation\\Http\\Kernel->handle() #40 {main} "} ```
Author
Owner

@gramakri commented on GitHub (Jul 16, 2024):

Creating public/img/avatars directory makes it work. I guess we need a .gitkeep directory in https://github.com/koel/koel/tree/master/public/img ?

<!-- gh-comment-id:2230681660 --> @gramakri commented on GitHub (Jul 16, 2024): Creating public/img/avatars directory makes it work. I guess we need a .gitkeep directory in https://github.com/koel/koel/tree/master/public/img ?
Author
Owner

@phanan commented on GitHub (Jul 16, 2024):

There's already a .gitkeep there.

<!-- gh-comment-id:2231553896 --> @phanan commented on GitHub (Jul 16, 2024): There's already a `.gitkeep` there.
Author
Owner

@phanan commented on GitHub (Jul 16, 2024):

Alright, I found the problem. Will issue a fix.

<!-- gh-comment-id:2231558396 --> @phanan commented on GitHub (Jul 16, 2024): Alright, I found the problem. Will issue a fix.
Author
Owner

@gramakri commented on GitHub (Jul 16, 2024):

github.com/koel/koel@9c55c5017a is the fix. thanks @phanan

<!-- gh-comment-id:2231735870 --> @gramakri commented on GitHub (Jul 16, 2024): https://github.com/koel/koel/commit/9c55c5017a80a8f59c1e35d3df439c587999ce15 is the fix. thanks @phanan
Author
Owner

@phanan commented on GitHub (Jul 16, 2024):

Anytime! Thanks for reporting the bug!

<!-- gh-comment-id:2231746860 --> @phanan commented on GitHub (Jul 16, 2024): Anytime! Thanks for reporting the bug!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/koel-koel#993
No description provided.