The stacktrace:
[2022-10-08 11:11:38] production.ERROR: file_get_contents(/var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/beganovich/snappdf/versions/revision.txt): Failed to open stream: No such file or directory {“userId”:1,“exception”:"[object] (ErrorException(code: 0): file_get_contents(/var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/beganovich/snappdf/versions/revision.txt): Failed to open stream: No such file or directory at /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/app/Http/Controllers/SelfUpdateController.php:178)
[stacktrace]
This happens every time I try to upgrade from 24 to 28.
The SelfUpdateController contains:
$current_revision = base_path(‘vendor/beganovich/snappdf/versions/revision.txt’);
$current_revision_text = file_get_contents($current_revision);
I have downloaded the lates .28 files from https://www.invoiceninja.org/ , however the SelfUpdateController.php still has the same lines in it and causes the same error?
david
October 9, 2022, 6:12am
3
try running
vendor/bin/snappdf download
That resolved the snappdf issue (after the correct permissions were set.)
Then the issue became nelexa/zip/zrc/
[2022-10-10 08:51:03] production.ERROR: chmod(): Operation not permitted {“userId”:1,“exception”:"[object] (ErrorException(code: 0): chmod(): Operation not permitted at /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/nelexa/zip/src/ZipFile.php:456)
[stacktrace]
Tried chmod and chown, same issue. Copied the ZipFile.php from the github and pasted into a new file I created and renamed to ZipFile.php and that worked.
On to the next error!
Same ownership issues for files in bootstrap/cache folder. The permissions were incorrect.
I went back and refreshed permissions for the entire website.
Then in circles back round to:
[2022-10-10 09:14:45] production.ERROR: Cannot update system because services.php is not writable {“userId”:1,“exception”:"[object] (App\Exceptions\FilePermissionsFailure(code: 0): Cannot update system because services.php is not writable at /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/app/Http/Controllers/SelfUpdateController.php:250)
[stacktrace]
[2022-10-10 08:51:03] production.ERROR: chmod(): Operation not permitted {“userId”:1,“exception”:"[object] (ErrorException(code: 0): chmod(): Operation not permitted at /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/nelexa/zip/src/ZipFile.php:456)
[stacktrace]
refreshed permissions, double checked permissions.
Both directories and files have permission
rwx rwx rwx www-data www-data
Try the update again:
production.ERROR: chmod(): Operation not permitted {“userId”:1,“exception”:"[object] (ErrorException(code: 0): chmod(): Operation not permitted at /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/nelexa/zip/src/ZipFile.php:456)
[stacktrace]
Permissions for the file this time are still:
“rwx rwx rwx www-data www-data”
Am I selecting the wrong chown?
[2022-10-10 09:52:12] production.ERROR: chmod(): Operation not permitted {"userId":1,"exception":"[object] (ErrorException(code: 0): chmod(): Operation not permitted at /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/nelexa/zip/src/ZipFile.php:456)
[stacktrace]
#0 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(259): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError()
#1 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->Illuminate\\Foundation\\Bootstrap\\{closure}()
#2 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/nelexa/zip/src/ZipFile.php(456): chmod()
#3 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/app/Http/Controllers/SelfUpdateController.php(143): PhpZip\\ZipFile->extractTo()
#4 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\SelfUpdateController->update()
#5 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction()
#6 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Routing/Route.php(261): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#7 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Routing/Route.php(204): Illuminate\\Routing\\Route->runController()
#8 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Routing/Router.php(725): Illuminate\\Routing\\Route->run()
#9 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#10 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(126): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#11 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(62): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequest()
#12 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle()
#13 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/app/Http/Middleware/QueryLogging.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#14 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\QueryLogging->handle()
#15 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#16 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#17 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/app/Http/Middleware/Locale.php(46): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#18 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\Locale->handle()
#19 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/app/Http/Middleware/PasswordProtection.php(124): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#20 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\PasswordProtection->handle()
#21 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/app/Http/Middleware/TokenAuth.php(96): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#22 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\TokenAuth->handle()
#23 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/app/Http/Middleware/SetDb.php(40): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#24 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\SetDb->handle()
#25 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#26 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Routing/Router.php(726): Illuminate\\Pipeline\\Pipeline->then()
#27 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Routing/Router.php(703): Illuminate\\Routing\\Router->runRouteWithinStack()
#28 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Routing/Router.php(667): Illuminate\\Routing\\Router->runRoute()
#29 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Routing/Router.php(656): Illuminate\\Routing\\Router->dispatchToRoute()
#30 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\\Routing\\Router->dispatch()
#31 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#32 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/SetRequestIpMiddleware.php(45): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#33 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Sentry\\Laravel\\Http\\SetRequestIpMiddleware->handle()
#34 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/SetRequestMiddleware.php(42): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#35 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Sentry\\Laravel\\Http\\SetRequestMiddleware->handle()
#36 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/livewire/livewire/src/DisableBrowserCache.php(19): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#37 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Livewire\\DisableBrowserCache->handle()
#38 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/beyondcode/laravel-query-detector/src/QueryDetectorMiddleware.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#39 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): BeyondCode\\QueryDetector\\QueryDetectorMiddleware->handle()
#40 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(59): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#41 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle()
#42 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/app/Http/Middleware/Cors.php(25): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#43 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\Cors->handle()
#44 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#45 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Http\\Middleware\\TrustProxies->handle()
#46 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#47 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#48 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
#49 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#50 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#51 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#52 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#53 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
#54 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#55 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#56 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#57 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\\Pipeline\\Pipeline->then()
#58 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#59 /var/www/vhosts/domain.co.uk/billing.domain.co.uk/httpdocs/public/index.php(57): Illuminate\\Foundation\\Http\\Kernel->handle()
#60 {main}
"}
//clean up old snappdf installations
$this->cleanOldSnapChromeBinaries();
$zipFile = new \PhpZip\ZipFile();
$zipFile->openFile($file);
( line 143) $zipFile->extractTo(base_path());
$zipFile->close();
nlog('Finished extracting files');
unlink($file);
nlog('Deleted release zip file');
I opened the selfupdatecontroller.php and at the line it says this, so as a last ditch effort I went back and chmod the entire ‘billing.domain.co.uk ’ folder 777 with www:data
Which failed to work either.
Klaus
October 16, 2022, 9:32pm
6
Hi there,
had the same issue with the same log entries refering to snappdf. After some testing i could complete the update successfully by commenting out the line 105 in SelfUpdateController.php to:
//$this->cleanOldSnapChromeBinaries();
like done here
Hope this helps.
Regards
P.S. As always do
sudo chown -R www-data:www-data invoiceninja
then the update via the web console, and afterwards
sudo -u www-data php artisan optimize