Description
Description
There is no simple reproducer yet.
PHP-screw is a PHP Encoder / Decoder. The tested version is with my additions at https://github.com/zboszor/php-screw , using either the last 1.9 release or from zboszor/php-screw#2
With a quite complex codebase using Laravel 12 and with mixed encrypted and non-encrypted scripts, PHP 8.4 throws various errors, like:
Jun 23 23:45:41 dtd php[992]: PHP Fatal error: Uncaught RuntimeException: A facade root has not been set. in /www/pages/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:358
Jun 23 23:45:41 dtd php[992]: Stack trace:
Jun 23 23:45:41 dtd php[992]: #0 /www/pages/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/RegisterErrorViewPaths.php(17): Illuminate\Support\Facades\Facade::__callStatic()
Jun 23 23:45:41 dtd php[992]: #1 /www/pages/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(918): Illuminate\Foundation\Exceptions\RegisterErrorViewPaths->__invoke()
Jun 23 23:45:41 dtd php[992]: #2 /www/pages/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(893): Illuminate\Foundation\Exceptions\Handler->registerErrorViewPaths()
Jun 23 23:45:41 dtd php[992]: #3 /www/pages/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(818): Illuminate\Foundation\Exceptions\Handler->renderHttpException()
Jun 23 23:45:41 dtd php[992]: #4 /www/pages/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(709): Illuminate\Foundation\Exceptions\Handler->prepareResponse()
Jun 23 23:45:41 dtd php[992]: #5 /www/pages/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(597): Illuminate\Foundation\Exceptions\Handler->renderExceptionResponse()
Jun 23 23:45:41 dtd php[992]: #6 /www/pages/app/Exceptions/Handler.php(61): Illuminate\Foundation\Exceptions\Handler->render()
Jun 23 23:45:41 dtd php[992]: #7 /www/pages/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(574): App\Exceptions\Handler->render()
Jun 23 23:45:41 dtd php[992]: #8 /www/pages/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(148): Illuminate\Foundation\Http\Kernel->renderException()
Jun 23 23:45:41 dtd php[992]: #9 /www/pages/public/index.php(52): Illuminate\Foundation\Http\Kernel->handle()
Jun 23 23:45:41 dtd php[992]: #10 {main}
Jun 23 23:45:41 dtd php[992]: thrown in /www/pages/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 358
and
[root@dtd ~]# cd /www/pages/
[root@dtd pages]# php artisan
In LoadConfiguration.php line 99:
array_merge(): Argument #2 must be of type array, int given
The second error is what #18943 was about.
Said Laravel 12 using codebase works properly in these situations:
- PHP 8.3 + PHP-screw + the usual mix of encrypted and non-encrypted scripts
- PHP 8.4 + PHP-screw + no encrypted files
With simple examples, PHP-screw works properly with PHP 8.4, both from cli and via the webserver.
The migration manual from 8.3 to 8.4 does not say a word about internal engine changes that would be related to this. Previously, the modified C API or a (slightly) different behaviour was always mentioned somewhere, even if in small print.
PHP Version
[root@dtd ~]# php -v
PHP 8.4.8 (cli) (built: Jun 3 2025 16:29:26) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.8, Copyright (c) Zend Technologies
with php_screw v2.0.0, (C) 2020-2025 Zoltán Böszörményi <[email protected]>, by Kunimasa Noda and Zoltán Böszörményi
with Zend OPcache v8.4.8, Copyright (c), by Zend Technologies
[root@dtd ~]# php-fpm -v
PHP 8.4.8 (fpm-fcgi) (built: Jun 3 2025 16:29:26) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.8, Copyright (c) Zend Technologies
with php_screw v2.0.0, (C) 2020-2025 Zoltán Böszörményi <[email protected]>, by Kunimasa Noda and Zoltán Böszörményi
with Zend OPcache v8.4.8, Copyright (c), by Zend Technologies
Operating System
No response