Skip to content

PHP 8.4 breaks php-screw #18945

Closed as not planned
Closed as not planned
@zboszor

Description

@zboszor

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions