Undefined constant "BookStack\Uploads\ImageService" #5260

Closed
opened 2026-02-05 09:52:10 +03:00 by OVERLORD · 4 comments
Owner

Originally created by @tzeier on GitHub (Apr 15, 2025).

Attempted Debugging

  • I have read the debugging page

Searched GitHub Issues

  • I have searched GitHub for the issue.

Describe the Scenario

When I try to upload an image, I get the following error:

Undefined constant "BookStack\Uploads\ImageService"

Image

File permissions are set like required.

Exact BookStack Version

25.02.1

Log Content

Details

#0 {{AppRoot}}/app/Uploads/ImageService.php(46): BookStack\Uploads\ImageService->saveNew()
#1 {{AppRoot}}/app/Uploads/ImageRepo.php(120): BookStack\Uploads\ImageService->saveNewFromUpload()
#2 {{AppRoot}}/app/Users/Controllers/UserAccountController.php(71): BookStack\Uploads\ImageRepo->saveNew()
#3 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): BookStack\Users\Controllers\UserAccountController->updateProfile()
#4 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction()
#5 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Illuminate\Routing\ControllerDispatcher->dispatch()
#6 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\Routing\Route->runController()
#7 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\Routing\Route->run()
#8 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\Routing\Router->Illuminate\Routing\{closure}()
#9 {{AppRoot}}/app/Users/Controllers/UserAccountController.php(23): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#10 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(191): BookStack\Users\Controllers\UserAccountController->BookStack\Users\Controllers\{closure}()
#11 {{AppRoot}}/app/Http/Middleware/Authenticate.php(23): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#12 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\Authenticate->handle()
#13 {{AppRoot}}/app/Http/Middleware/Localization.php(32): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#14 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\Localization->handle()
#15 {{AppRoot}}/app/Http/Middleware/RunThemeActions.php(26): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#16 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\RunThemeActions->handle()
#17 {{AppRoot}}/app/Http/Middleware/CheckEmailConfirmed.php(47): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#18 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\CheckEmailConfirmed->handle()
#19 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(88): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#20 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle()
#21 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#22 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\View\Middleware\ShareErrorsFromSession->handle()
#23 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#24 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest()
#25 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Session\Middleware\StartSession->handle()
#26 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#27 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()
#28 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(75): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#29 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Cookie\Middleware\EncryptCookies->handle()
#30 {{AppRoot}}/app/Http/Middleware/ApplyCspRules.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#31 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\ApplyCspRules->handle()
#32 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#33 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\Pipeline\Pipeline->then()
#34 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\Routing\Router->runRouteWithinStack()
#35 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\Routing\Router->runRoute()
#36 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\Routing\Router->dispatchToRoute()
#37 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\Routing\Router->dispatch()
#38 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}()
#39 {{AppRoot}}/app/Http/Middleware/PreventResponseCaching.php(28): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#40 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\PreventResponseCaching->handle()
#41 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#42 {{AppRoot}}/app/Http/Middleware/TrustProxies.php(41): Illuminate\Http\Middleware\TrustProxies->handle()
#43 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\TrustProxies->handle()
#44 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#45 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
#46 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\TrimStrings->handle()
#47 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#48 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Http\Middleware\ValidatePostSize->handle()
#49 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#50 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle()
#51 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#52 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\Pipeline\Pipeline->then()
#53 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()
#54 {{AppRoot}}/public/index.php(23): Illuminate\Foundation\Http\Kernel->handle()
#55 {main}

Hosting Environment

PHP 8.2.28 on apache (Plesk)

Originally created by @tzeier on GitHub (Apr 15, 2025). ### Attempted Debugging - [x] I have read the debugging page ### Searched GitHub Issues - [x] I have searched GitHub for the issue. ### Describe the Scenario When I try to upload an image, I get the following error: Undefined constant "BookStack\Uploads\ImageService" ![Image](https://github.com/user-attachments/assets/81b6ef42-aef7-40d8-937b-f034888eac3c) File permissions are set like required. ### Exact BookStack Version 25.02.1 ### Log Content <details><summary>Details</summary> <p> ``` #0 {{AppRoot}}/app/Uploads/ImageService.php(46): BookStack\Uploads\ImageService->saveNew() #1 {{AppRoot}}/app/Uploads/ImageRepo.php(120): BookStack\Uploads\ImageService->saveNewFromUpload() #2 {{AppRoot}}/app/Users/Controllers/UserAccountController.php(71): BookStack\Uploads\ImageRepo->saveNew() #3 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): BookStack\Users\Controllers\UserAccountController->updateProfile() #4 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction() #5 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Illuminate\Routing\ControllerDispatcher->dispatch() #6 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\Routing\Route->runController() #7 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\Routing\Route->run() #8 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\Routing\Router->Illuminate\Routing\{closure}() #9 {{AppRoot}}/app/Users/Controllers/UserAccountController.php(23): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #10 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(191): BookStack\Users\Controllers\UserAccountController->BookStack\Users\Controllers\{closure}() #11 {{AppRoot}}/app/Http/Middleware/Authenticate.php(23): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #12 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\Authenticate->handle() #13 {{AppRoot}}/app/Http/Middleware/Localization.php(32): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #14 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\Localization->handle() #15 {{AppRoot}}/app/Http/Middleware/RunThemeActions.php(26): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #16 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\RunThemeActions->handle() #17 {{AppRoot}}/app/Http/Middleware/CheckEmailConfirmed.php(47): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #18 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\CheckEmailConfirmed->handle() #19 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(88): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #20 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle() #21 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #22 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\View\Middleware\ShareErrorsFromSession->handle() #23 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #24 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest() #25 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Session\Middleware\StartSession->handle() #26 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #27 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle() #28 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(75): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #29 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Cookie\Middleware\EncryptCookies->handle() #30 {{AppRoot}}/app/Http/Middleware/ApplyCspRules.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #31 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\ApplyCspRules->handle() #32 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #33 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\Pipeline\Pipeline->then() #34 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\Routing\Router->runRouteWithinStack() #35 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\Routing\Router->runRoute() #36 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\Routing\Router->dispatchToRoute() #37 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\Routing\Router->dispatch() #38 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}() #39 {{AppRoot}}/app/Http/Middleware/PreventResponseCaching.php(28): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #40 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\PreventResponseCaching->handle() #41 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #42 {{AppRoot}}/app/Http/Middleware/TrustProxies.php(41): Illuminate\Http\Middleware\TrustProxies->handle() #43 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): BookStack\Http\Middleware\TrustProxies->handle() #44 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #45 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle() #46 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\TrimStrings->handle() #47 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #48 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Http\Middleware\ValidatePostSize->handle() #49 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #50 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle() #51 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}() #52 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\Pipeline\Pipeline->then() #53 {{AppRoot}}/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter() #54 {{AppRoot}}/public/index.php(23): Illuminate\Foundation\Http\Kernel->handle() #55 {main} ``` </p> </details> ### Hosting Environment PHP 8.2.28 on apache (Plesk)
OVERLORD added the 🐕 Support label 2026-02-05 09:52:10 +03:00
Author
Owner

@ssddanbrown commented on GitHub (Apr 15, 2025):

Hi @tzeier,
That's kind of a strange error to get. Would be good to understand more about the instance.

  • Is this a fresh system or an updated system?
  • Were image uploads working before?
  • How are you installing/updating the instance?
@ssddanbrown commented on GitHub (Apr 15, 2025): Hi @tzeier, That's kind of a strange error to get. Would be good to understand more about the instance. - Is this a fresh system or an updated system? - Were image uploads working before? - How are you installing/updating the instance?
Author
Owner

@tzeier commented on GitHub (Apr 15, 2025):

It's a fresh system.
FIrst I installed it in ddev and already had the issue there. Then I tried to deploy it on the server. and still got this error.

@tzeier commented on GitHub (Apr 15, 2025): It's a fresh system. FIrst I installed it in ddev and already had the issue there. Then I tried to deploy it on the server. and still got this error.
Author
Owner

@ssddanbrown commented on GitHub (Apr 15, 2025):

Then I tried to deploy it on the server.

  • Are you following our manual installation steps?
  • If so:
    • Did each step complete without error?
    • If you re-run the composer install --no-dev step, does that run without any warnings/errors?
@ssddanbrown commented on GitHub (Apr 15, 2025): > Then I tried to deploy it on the server. - Are you following our manual installation steps? - If so: - Did each step complete without error? - If you re-run the `composer install --no-dev` step, does that run without any warnings/errors?
Author
Owner

@tzeier commented on GitHub (Apr 16, 2025):

Ok. Somehow I managed to fix it.

I tried to reinstall it locally in ddev, following the exact steps of the guide (manual Installation) and got no warning/error until I tried to upload a new Profile Image - The I got the new error "Undefined Constant "BookStack/Uploads/ImageResize". - So in my local ddev it doesn't work yet.

But on my Plesk hosting, I managed to pull it freshly from the repo and then run the composer install. Now it seems to work there.

strange..

@tzeier commented on GitHub (Apr 16, 2025): Ok. Somehow I managed to fix it. I tried to reinstall it locally in ddev, following the exact steps of the guide (manual Installation) and got no warning/error until I tried to upload a new Profile Image - The I got the new error "Undefined Constant "BookStack/Uploads/ImageResize". - So in my local ddev it doesn't work yet. But on my Plesk hosting, I managed to pull it freshly from the repo and then run the composer install. Now it seems to work there. strange..
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/BookStack#5260