Problems with updating v5 from 5.1.61 to 5.2.14

I initially installed my v5 with Softaculous on my shared hosting setup, Unfortunately this seems to disable autoupdate as DISABLE_AUTO_UPDATE=true in the .env file
As part of getting the install to work ended up doing the following

  • edit .env to change app location so not in /public
  • edit .htaccess to match
  • the directory that invoice.mydomain.co.uk pointed to so the it pointed at the public subdirectory
  • adjusted that auto configured cron so that it ran more than the once per day than Softaculous configured it.

Unfortunately having made these changes to install it safely Softaculous no longer recognises the install so I can’t use that do updates.

So to update from 5.1.61 to 5.2.14 I realised I need to do it manually as per instructions Free Source Available Invoicing, Expenses & Time-Tracking | Invoice Ninja so I’ve downloaded the “source code” version (tar.gz) copied files in over the top of the existing install (checked the .htaccess doesn’t have the public redirect) and all I get is a 500 server error. [And yes I did backup the database and the previous install first]

This is the last entry in laravel.log - any ideas what is going wrong?

[2021-07-22 19:15:02] production.ERROR: Unresolvable dependency resolving [Parameter #0 [ array $options ]] in class App\Utils\CssInlinerPlugin {“exception”:"[object] (Illuminate\Contracts\Container\BindingResolutionException(code: 0): Unresolvable d
ependency resolving [Parameter #0 [ array $options ]] in class App\Utils\CssInlinerPlugin at /invoice/vendor/laravel/framework/src/Illuminate/Container/Container.php:1064)
[stacktrace]
#0 /invoice/vendor/laravel/framework/src/Illuminate/Container/Container.php(971): Illuminate\Container\Container->unresolvablePrimitive(Object(ReflectionParameter))
#1 /invoice/vendor/laravel/framework/src/Illuminate/Container/Container.php(906): Illuminate\Container\Container->resolvePrimitive(Object(ReflectionParameter))
#2 /invoice/vendor/laravel/framework/src/Illuminate/Container/Container.php(868): Illuminate\Container\Container->resolveDependencies(Array)
#3 /invoice/vendor/laravel/framework/src/Illuminate/Container/Container.php(714): Illuminate\Container\Container->build(‘App\\Utils\\CssIn…’)
#4 /invoice/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(841): Illuminate\Container\Container->resolve(‘App\\Utils\\CssIn…’, Array, true)
#5 /invoice/vendor/laravel/framework/src/Illuminate/Container/Container.php(652): Illuminate\Foundation\Application->resolve(‘App\\Utils\\CssIn…’, Array)
#6 /invoice/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(826): Illuminate\Container\Container->make(‘App\\Utils\\CssIn…’, Array)
#7 /invoice/app/Providers/MailServiceProvider.php(31): Illuminate\Foundation\Application->make(‘App\\Utils\\CssIn…’)
#8 /invoice/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\Providers\MailServiceProvider->boot()
#9 /invoice/vendor/laravel/framework/src/Illuminate/Container/Util.php(40): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#10 /invoice/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure(Object(Closure))
#11 /invoice/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#12 /invoice/vendor/laravel/framework/src/Illuminate/Container/Container.php(611): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#13 /invoice/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(914): Illuminate\Container\Container->call(Array)
#14 /invoice/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(895): Illuminate\Foundation\Application->bootProvider(Object(App\Providers\MailServiceProvider))
#15 [internal function]: Illuminate\Foundation\Application->Illuminate\Foundation\{closure}(Object(App\Providers\MailServiceProvider), 38)
#16 /invoice/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(896): array_walk(Array, Object(Closure))
#17 /invoice/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php(17): Illuminate\Foundation\Application->boot()
#18 /invoice/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(237): Illuminate\Foundation\Bootstrap\BootProviders->bootstrap(Object(Illuminate\Foundation\Application))
#19 /invoice/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(310): Illuminate\Foundation\Application->bootstrapWith(Array)
#20 /invoice/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(127): Illuminate\Foundation\Console\Kernel->bootstrap()
#21 /invoice/artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 {main}
"}

I’ve tried reverting back to the 5.1.61 version and editing .env to change the DISABLE_AUTO_UPDATE=false, but I can’t see where/how to then trigger the autoupdate from the UI.

Any suggestions please.

Ian

Managed to get the “needs update” appear in the UI be editing .env to set

DISABLE_AUTO_UPDATE=false

and waiting for ages.

all updated automagically :slight_smile: that was really neat when it worked.

Ian

Are you still seeing the error, maybe this will help?

https://invoiceninja.github.io/docs/self-host-troubleshooting/#unresolvable-dependency-resolving-parameter-0-array-options-in-c

@hillel that you for responding. I managed to clear the error by reverting to the original version. removing the disable auto upgrade and waiting for a while/manually running the cron job. I find it odd that the Softaculous install doesn’t do things in the most secure i.e. not expose the main dir by setting things up for the public dir and it disables the auto update, however that my just be my shared host providers.

Part of my problem when I rang things manually was I couldn’t get it to run the update?secret. I don’t know if deleting the bootstrap/cache would work.

I must admit when I got the autoupdate working it was the fastest and most slick I’ve seen of any autoupdate for a web app (it took less time to run that it did for me to wget the source code manually !) so I must commend the developers on making that work so well.

Ian

It may help to understand the auto-update is disabled by design with Softaculous, you need to use the Softaculous upgrade process to update to new versions.

This can sometimes be a few days behind the latest version but they run their own checks and have helped catch bad builds.

Thanks. yes I understood why autoupdate was disabled by default in Softaculous. My problem was that Softaculous no longer recognised my install as being one that I had put on using it . Probably because I had tweaked by install to make it more secure and to actually make it work (when I installed Softaculous on my host put in a once daily cron which just didn’t work - I’m aware that this may be my hosting provider and not Softaculous). I tried importing the install to Softaculous but it just didn’t recognise it. It’s working now and the update works really well so I’m happy. Thanks for working on such great product.

1 Like