Hi.
I’m unable to create PDFs after today’s update. Is there a fix?
Thank you
Blockquote
ErrorException: require(/var/www/invoiceninja/lang/sl/texts.php): Failed to open stream: Permission denied in /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:123
Stack trace:
#0 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(256): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()
#1 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(123): Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap{closure}()
#2 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(123): require(‘…’)
#3 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(124): Illuminate\Filesystem\Filesystem::Illuminate\Filesystem{closure}()
#4 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Translation/FileLoader.php(129): Illuminate\Filesystem\Filesystem->getRequire()
#5 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php(816): Illuminate\Translation\FileLoader->Illuminate\Translation{closure}()
#6 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Translation/FileLoader.php(127): Illuminate\Support\Collection->reduce()
#7 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Translation/FileLoader.php(68): Illuminate\Translation\FileLoader->loadPaths()
#8 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Translation/Translator.php(324): Illuminate\Translation\FileLoader->load()
#9 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Translation/Translator.php(237): Illuminate\Translation\Translator->load()
#10 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Translation/Translator.php(164): Illuminate\Translation\Translator->getLine()
#11 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(974): Illuminate\Translation\Translator->get()
#12 /var/www/invoiceninja/app/Helpers/TranslationHelper.php(25): trans()
#13 /var/www/invoiceninja/app/Utils/HtmlEngine.php(142): ctrans()
#14 /var/www/invoiceninja/app/Utils/HtmlEngine.php(876): App\Utils\HtmlEngine->buildEntityDataArray()
#15 /var/www/invoiceninja/app/Repositories/ActivityRepository.php(233): App\Utils\HtmlEngine->generateLabelsAndValues()
#16 /var/www/invoiceninja/app/Repositories/ActivityRepository.php(98): App\Repositories\ActivityRepository->generateHtml()
#17 /var/www/invoiceninja/app/Repositories/ActivityRepository.php(69): App\Repositories\ActivityRepository->createBackup()
#18 /var/www/invoiceninja/app/Listeners/Activity/QuoteUpdatedActivity.php(56): App\Repositories\ActivityRepository->save()
#19 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Events/CallQueuedListener.php(114): App\Listeners\Activity\QuoteUpdatedActivity->handle()
#20 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Events\CallQueuedListener->handle()
#21 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::Illuminate\Container{closure}()
#22 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure()
#23 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
#24 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Container/Container.php(690): Illuminate\Container\BoundMethod::call()
#25 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(128): Illuminate\Container\Container->call()
#26 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Bus\Dispatcher->Illuminate\Bus{closure}()
#27 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#28 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then()
#29 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(124): Illuminate\Bus\Dispatcher->dispatchNow()
#30 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Queue\CallQueuedHandler->Illuminate\Queue{closure}()
#31 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#32 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(123): Illuminate\Pipeline\Pipeline->then()
#33 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(71): Illuminate\Queue\CallQueuedHandler->dispatchThroughMiddleware()
#34 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\Queue\CallQueuedHandler->call()
#35 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(440): Illuminate\Queue\Jobs\Job->fire()
#36 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(390): Illuminate\Queue\Worker->process()
#37 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(177): Illuminate\Queue\Worker->runJob()
#38 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(139): Illuminate\Queue\Worker->daemon()
#39 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(122): Illuminate\Queue\Console\WorkCommand->runWorker()
#40 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Queue\Console\WorkCommand->handle()
#41 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::Illuminate\Container{closure}()
#42 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure()
#43 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
#44 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Container/Container.php(690): Illuminate\Container\BoundMethod::call()
#45 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Console/Command.php(213): Illuminate\Container\Container->call()
#46 /var/www/invoiceninja/vendor/symfony/console/Command/Command.php(279): Illuminate\Console\Command->execute()
#47 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Console/Command.php(182): Symfony\Component\Console\Command\Command->run()
#48 /var/www/invoiceninja/vendor/symfony/console/Application.php(1047): Illuminate\Console\Command->run()
#49 /var/www/invoiceninja/vendor/symfony/console/Application.php(316): Symfony\Component\Console\Application->doRunCommand()
#50 /var/www/invoiceninja/vendor/symfony/console/Application.php(167): Symfony\Component\Console\Application->doRun()
#51 /var/www/invoiceninja/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(197): Symfony\Component\Console\Application->run()
#52 /var/www/invoiceninja/artisan(35): Illuminate\Foundation\Console\Kernel->handle()
#53 {main}
hillel
January 7, 2025, 9:54am
2
Hi,
Are you using the latest available version?
I restored my VM to last night’s backup (v5.11.0-W171)
It works again, but I’m afraid to do any updates.
Please let me know when it’s safe to update.
Thank you
We also have problems generating PDFs since one of the last updates. From the laravel.log:
[2025-01-07 11:57:16] production.ERROR: There was an issue generating the PDF locally {"userId":1,"exception":"[object] (Exception(code: 0): There was an issue generating the PDF locally at /var/www/html/invoiceninja/app/Services/Pdf/PdfService.php:107)
[stacktrace]
#0 /var/www/html/invoiceninja/app/Http/Controllers/PreviewController.php(88): App\\Services\\Pdf\\PdfService->getPdf()
#1 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\PreviewController->live()
#2 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\\Routing\\Controller->callAction()
#3 /var/www/html/invoiceninja/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Tracing/Routing/TracingControllerDispatcherTracing.php(21): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#4 /var/www/html/invoiceninja/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Tracing/Routing/TracingRoutingDispatcher.php(18): Sentry\\Laravel\\Tracing\\Routing\\TracingControllerDispatcherTracing->Sentry\\Laravel\\Tracing\\Routing\\{closure}()
#5 /var/www/html/invoiceninja/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Tracing/Routing/TracingControllerDispatcherTracing.php(20): Sentry\\Laravel\\Tracing\\Routing\\TracingRoutingDispatcher->wrapRouteDispatch()
#6 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Sentry\\Laravel\\Tracing\\Routing\\TracingControllerDispatcherTracing->dispatch()
#7 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\\Routing\\Route->runController()
#8 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\\Routing\\Route->run()
#9 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#10 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(124): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#11 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(89): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequestUsingNamedLimiter()
#12 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle()
#13 /var/www/html/invoiceninja/app/Http/Middleware/QueryLogging.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#14 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\\Http\\Middleware\\QueryLogging->handle()
#15 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(51): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#16 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#17 /var/www/html/invoiceninja/app/Http/Middleware/Locale.php(95): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#18 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\\Http\\Middleware\\Locale->handle()
#19 /var/www/html/invoiceninja/app/Http/Middleware/TokenAuth.php(102): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#20 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\\Http\\Middleware\\TokenAuth->handle()
#21 /var/www/html/invoiceninja/app/Http/Middleware/SetDb.php(40): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#22 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\\Http\\Middleware\\SetDb->handle()
#23 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#24 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\\Pipeline\\Pipeline->then()
#25 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\\Routing\\Router->runRouteWithinStack()
#26 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\\Routing\\Router->runRoute()
#27 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\\Routing\\Router->dispatchToRoute()
#28 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\\Routing\\Router->dispatch()
#29 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#30 /var/www/html/invoiceninja/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/FlushEventsMiddleware.php(13): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#31 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Sentry\\Laravel\\Http\\FlushEventsMiddleware->handle()
#32 /var/www/html/invoiceninja/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/SetRequestIpMiddleware.php(45): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#33 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Sentry\\Laravel\\Http\\SetRequestIpMiddleware->handle()
#34 /var/www/html/invoiceninja/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/SetRequestMiddleware.php(31): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#35 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Sentry\\Laravel\\Http\\SetRequestMiddleware->handle()
#36 /var/www/html/invoiceninja/vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php(19): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#37 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Livewire\\Features\\SupportDisablingBackButtonCache\\DisableBackButtonCacheMiddleware->handle()
#38 /var/www/html/invoiceninja/app/Http/Middleware/Cors.php(24): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#39 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): App\\Http\\Middleware\\Cors->handle()
#40 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#41 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Http\\Middleware\\TrustProxies->handle()
#42 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#43 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#44 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
#45 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#46 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#47 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#48 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#49 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Http\\Middleware\\ValidatePostSize->handle()
#50 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#51 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#52 /var/www/html/invoiceninja/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Tracing/Middleware.php(79): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#53 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Sentry\\Laravel\\Tracing\\Middleware->handle()
#54 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#55 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Pipeline\\Pipeline->then()
#56 /var/www/html/invoiceninja/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#57 /var/www/html/invoiceninja/public/index.php(56): Illuminate\\Foundation\\Http\\Kernel->handle()
#58 {main}
"}
We also got errors concerning file permissions but that error doesn’t show up anymore interestingly:
[2025-01-07 11:56:56] production.ERROR: Unable to generate the raw PDF {"userId":2,"exception":"[object] (App\\Exceptions\\FilePermissionsFailure(code: 0): Unable to generate the raw PDF at /var/www/html/invoiceninja/app/Jobs/Entity/CreateRawPdf.php:115)
[stacktrace]
I tried to update today with latest 5.11.17. Same thing. PDF creation is still broken.
Restored the VM snapshot back to 5.11.0
Br
Also, from your error log it appears that your issue may be file permission related - I’d make sure everything with permissions is correct, owned by correct user, etc…
I had this same issue and was able to fix by:
Ensuring Snappdf was properly installed
Ensuring the binary was executable (chmod +x as www-data to everything in bin dir, as they should all be executable, no?)
Having it redownload headless chrome. Got the command from ./snappdf --help or similar
Of course that’s all predicated on you using snappdf. Hopefully useful to someone
2 Likes
xoo
January 11, 2025, 11:55am
9
I had the same issue. My steps to fix:
cd $INVOICENINJA
chmod +x vendor/bin/snappdf
sudo -u www-data vendor/bin/snappdf download --force
2 Likes
Thank you #jasonridesabike and #xoo
It works.
hillel
January 11, 2025, 6:35pm
11
Thanks for letting us know, and thank you @jasonridesabike and @xoo !
cc @david