PHP 7.2 brakes the Invoice Ninja

Hi.

Since v 4+ needs PHP 7+ I have upgraded server with PHP 7.2. But that broke my current Invoice Ninja setup. Don’t know why. I suppose because of MCRYPT, but as I read from PHP 7.1+ MCRYPT extension is not supported anymore.

Any ides how to solve this?

My setup is Windows / Apache 2.4.25 / PHP 7.2 / Mysql server 5.7

Thank you
Br,
Dali

Whoops, looks like something went wrong.
1/1
ErrorException in Builder.php line 1185:
count(): Parameter must be an array or an object that implements Countable
in Builder.php line 1185
at HandleExceptions->handleError('2', 'count(): Parameter must be an array or an object that implements Countable', 'C:\www\globevoices.com\payments\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php', '1185', array('scope' => array(object(Task), 'scopeScope'), 'parameters' => array(object(Builder)), 'query' => object(Builder)))
at count(null) in Builder.php line 1185
at Builder->callScope(array(object(Task), 'scopeScope'), array(object(Builder))) in Builder.php line 1419
at Builder->__call('scope', array())
at call_user_func_array(array(object(Builder), 'scope'), array()) in compiled.php line 11735
at Model->__call('scope', array())
at call_user_func_array(array(object(Task), 'scope'), array()) in compiled.php line 11740
at Model::__callStatic('scope', array()) in DashboardRepository.php line 408
at DashboardRepository->tasks('1', '1', true) in DashboardController.php line 43
at DashboardController->index()
at call_user_func_array(array(object(DashboardController), 'index'), array()) in compiled.php line 9496
at Controller->callAction('index', array()) in compiled.php line 9558
at ControllerDispatcher->call(object(DashboardController), object(Route), 'index') in compiled.php line 9538
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 10020
at Pipeline->then(object(Closure)) in compiled.php line 9539
at ControllerDispatcher->callWithinStack(object(DashboardController), object(Route), object(Request), 'index') in compiled.php line 9526
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\DashboardController', 'index') in compiled.php line 8596
at Route->runController(object(Request)) in compiled.php line 8583
at Route->run(object(Request)) in compiled.php line 8297
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Authenticate.php line 102
at Authenticate->handle(object(Request), object(Closure), 'user')
at call_user_func_array(array(object(Authenticate), 'handle'), array(object(Request), object(Closure), 'user')) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in DatabaseLookup.php line 19
at DatabaseLookup->handle(object(Request), object(Closure), 'user')
at call_user_func_array(array(object(DatabaseLookup), 'handle'), array(object(Request), object(Closure), 'user')) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 10020
at Pipeline->then(object(Closure)) in compiled.php line 8298
at Router->runRouteWithinStack(object(Route), object(Request)) in compiled.php line 8289
at Router->dispatchToRoute(object(Request)) in compiled.php line 8279
at Router->dispatch(object(Request)) in compiled.php line 2419
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in HandlePreflight.php line 38
at HandlePreflight->handle(object(Request), object(Closure))
at call_user_func_array(array(object(HandlePreflight), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Debugbar.php line 51
at Debugbar->handle(object(Request), object(Closure))
at call_user_func_array(array(object(Debugbar), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartupCheck.php line 220
at StartupCheck->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartupCheck), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in QueryLogging.php line 32
at QueryLogging->handle(object(Request), object(Closure))
at call_user_func_array(array(object(QueryLogging), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in DuplicateSubmissionCheck.php line 41
at DuplicateSubmissionCheck->handle(object(Request), object(Closure))
at call_user_func_array(array(object(DuplicateSubmissionCheck), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 3225
at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 44
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 13546
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 12036
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 13285
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 13222
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 3286
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10035
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 10020
at Pipeline->then(object(Closure)) in compiled.php line 2366
at Kernel->sendRequestThroughRouter(object(Request)) in compiled.php line 2350
at Kernel->handle(object(Request)) in index.php line 51

PHP 7.2 isn’t yet supported

Which PHP is OK for Invoice Ninja?

7.1 or 7.0 ?

Thank you

Br,
Dali

Either should work.

If you’re using Mcrypt encryption it’s a bit easier to re-encrypt with 7.0.

Now I reverted back to PHP Version 5.6.30 and Invoice Ninja 4.1.0 seems to work just fine. Should I expect any issues?

Br,
Dali

Most likely

I think i read you said in one post version 4 uses latest laravel that does not use mcrypt extebsion anymore. Maybe i remembered it wrong.

Thank you

Br,
Dali

That’s correct, if you’re currently using Mcrypt you’ll need to re-encrypt your data.

http://docs.invoiceninja.com/en/latest/update.html#version-4-0

Im not sure if I use Mcrypt or not. How to check?

If yes, how to re-encrypt my data?

Thank you

Br,
Dali

Which cipher is set in your .env file?

its:

APP_CIPHER=AES-256-CBC

Br,
Dali

Great, then you aren’t using mcrypt

Thank you.

So if I’m not using Mcrypt, PHP 7.1 would be correct choice for me, I guess?

Thank you
Br,
Dali

Either should work

7.1.13 works fine. At least so far :slight_smile:

Thank you for your help again Hillel.

Br,
Dali

Great to hear!