Installation Fails PHP 8.1 #540

Closed
opened 2026-02-20 11:03:46 -05:00 by deekerman · 2 comments
Owner

Originally created by @srsgores on GitHub (Apr 27, 2022).

Running on an LXC Debian 11.3.1 container with php8.1-fpm, php artisan key:generate errors out:

PHP Fatal error: During inheritance of ArrayAccess: Uncaught ErrorException: Return type of Illuminate\Support\Collection::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Support/Collection.php:1349
Stack trace:
#0 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Support/Collection.php(11): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()
#1 /var/www/Heimdall/vendor/composer/ClassLoader.php(571): include('...')
#2 /var/www/Heimdall/vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile()
#3 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Support/helpers.php(110): Composer\Autoload\ClassLoader->loadClass()
#4 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(130): collect()
#5 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(106): Illuminate\Foundation\PackageManifest->build()
#6 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(89): Illuminate\Foundation\PackageManifest->getManifest()
#7 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(78): Illuminate\Foundation\PackageManifest->config()
#8 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterFacades.php(26): Illuminate\Foundation\PackageManifest->aliases()
#9 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(230): Illuminate\Foundation\Bootstrap\RegisterFacades->bootstrap()
#10 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(310): Illuminate\Foundation\Application->bootstrapWith()
#11 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(127): Illuminate\Foundation\Console\Kernel->bootstrap()
#12 /var/www/Heimdall/artisan(37): Illuminate\Foundation\Console\Kernel->handle()
#13 {main} in /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Support/Collection.php on line 11

In Collection.php line 11:

During inheritance of ArrayAccess: Uncaught ErrorException: Return type of Illuminate\Support\Collection::offse
tExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\Return
TypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/Heimdall/vendor/laravel
/framework/src/Illuminate/Support/Collection.php:1349
Stack trace:
#0 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Support/Collection.php(11): Illuminate\Foundation
Bootstrap\HandleExceptions->handleError()
#1 /var/www/Heimdall/vendor/composer/ClassLoader.php(571): include('...')
#2 /var/www/Heimdall/vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile()
#3 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Support/helpers.php(110): Composer\Autoload\ClassL
oader->loadClass()
#4 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(130): collect()
#5 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(106): Illuminate\Fo
undation\PackageManifest->build()
#6 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(89): Illuminate\Fou
ndation\PackageManifest->getManifest()
#7 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(78): Illuminate\Fou
ndation\PackageManifest->config()
#8 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterFacades.php(26): Illu
minate\Foundation\PackageManifest->aliases()
#9 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(230): Illuminate\Founda
tion\Bootstrap\RegisterFacades->bootstrap()
#10 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(310): Illuminate\Fo
undation\Application->bootstrapWith()
#11 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(127): Illuminate\Fo
undation\Console\Kernel->bootstrap()
#12 /var/www/Heimdall/artisan(37): Illuminate\Foundation\Console\Kernel->handle()
#13 {main}

Originally created by @srsgores on GitHub (Apr 27, 2022). Running on an LXC Debian `11.3.1` container with `php8.1-fpm`, `php artisan key:generate` errors out: > PHP Fatal error: During inheritance of ArrayAccess: Uncaught ErrorException: Return type of Illuminate\Support\Collection::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Support/Collection.php:1349 > Stack trace: > #0 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Support/Collection.php(11): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() > #1 /var/www/Heimdall/vendor/composer/ClassLoader.php(571): include('...') > #2 /var/www/Heimdall/vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile() > #3 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Support/helpers.php(110): Composer\Autoload\ClassLoader->loadClass() > #4 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(130): collect() > #5 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(106): Illuminate\Foundation\PackageManifest->build() > #6 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(89): Illuminate\Foundation\PackageManifest->getManifest() > #7 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(78): Illuminate\Foundation\PackageManifest->config() > #8 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterFacades.php(26): Illuminate\Foundation\PackageManifest->aliases() > #9 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(230): Illuminate\Foundation\Bootstrap\RegisterFacades->bootstrap() > #10 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(310): Illuminate\Foundation\Application->bootstrapWith() > #11 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(127): Illuminate\Foundation\Console\Kernel->bootstrap() > #12 /var/www/Heimdall/artisan(37): Illuminate\Foundation\Console\Kernel->handle() > #13 {main} in /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Support/Collection.php on line 11 > > In Collection.php line 11: > > During inheritance of ArrayAccess: Uncaught ErrorException: Return type of Illuminate\Support\Collection::offse > tExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\Return > TypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/Heimdall/vendor/laravel > /framework/src/Illuminate/Support/Collection.php:1349 > Stack trace: > #0 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Support/Collection.php(11): Illuminate\Foundation\ > Bootstrap\HandleExceptions->handleError() > #1 /var/www/Heimdall/vendor/composer/ClassLoader.php(571): include('...') > #2 /var/www/Heimdall/vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile() > #3 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Support/helpers.php(110): Composer\Autoload\ClassL > oader->loadClass() > #4 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(130): collect() > #5 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(106): Illuminate\Fo > undation\PackageManifest->build() > #6 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(89): Illuminate\Fou > ndation\PackageManifest->getManifest() > #7 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(78): Illuminate\Fou > ndation\PackageManifest->config() > #8 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterFacades.php(26): Illu > minate\Foundation\PackageManifest->aliases() > #9 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(230): Illuminate\Founda > tion\Bootstrap\RegisterFacades->bootstrap() > #10 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(310): Illuminate\Fo > undation\Application->bootstrapWith() > #11 /var/www/Heimdall/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(127): Illuminate\Fo > undation\Console\Kernel->bootstrap() > #12 /var/www/Heimdall/artisan(37): Illuminate\Foundation\Console\Kernel->handle() > #13 {main}
Author
Owner

@archi commented on GitHub (Jun 23, 2022):

Seems this requires an update of the bundled libs (or whatever PHP slang) to the upstream versions.
At least for e.g. https://github.com/illuminate/database/blob/master/Eloquent/Model.php this is fixed.

What I did was essentially:

  1. clone repo, cd into checkout
  2. run yarn
  3. In composer.json, bump laravel/framework to 8.0, laravel/ui to 3.4, phpunit to 8.0
  4. run composer

That does the trick for me (and also generated the key, though I still adapted the .env for my needs). At least I could add a service, didn't test much beyond that. Maybe it's still subtily broken somewhere else, e.g. the app itself could still use deprecated functionality, or some dependency that hasn't been ported to php 8.1. You probably want to enable debug in your .env to catch any such errors.

Also, there is a PR that seems to do this properly (I just guessed the bumped versions): https://github.com/linuxserver/Heimdall/pull/843 I might just switch to that branch, or use the branch author's updated files to fetch the upgraded packages myself.

@archi commented on GitHub (Jun 23, 2022): Seems this requires an update of the bundled libs (or whatever PHP slang) to the upstream versions. At least for e.g. https://github.com/illuminate/database/blob/master/Eloquent/Model.php this is fixed. What I did was essentially: 1. clone repo, cd into checkout 2. run `yarn` 3. In composer.json, bump laravel/framework to 8.0, laravel/ui to 3.4, phpunit to 8.0 4. run `composer` That does the trick for me (and also generated the key, though I still adapted the `.env` for my needs). At least I could add a service, didn't test much beyond that. Maybe it's still subtily broken somewhere else, e.g. the app itself could still use deprecated functionality, or some dependency that hasn't been ported to php 8.1. You probably want to enable debug in your `.env` to catch any such errors. Also, there is a PR that seems to do this properly (I just guessed the bumped versions): https://github.com/linuxserver/Heimdall/pull/843 I might just switch to that branch, or use the branch author's updated files to fetch the upgraded packages myself.
Author
Owner

@KodeStar commented on GitHub (Nov 14, 2022):

Should be fixed

@KodeStar commented on GitHub (Nov 14, 2022): Should be fixed
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/Heimdall#540
No description provided.