Skip to content

Turbo extension not loaded in ZTS builds #15422

Closed
phpstan/phpstan-src
#6706

Description

@darthf1

Bug report

Hi!

Running the diagnose I get the output below. Turbo is off. I asked Claude why that is, and it told me:

phpstan dropped the Linux -zts builds for PHP 8.3–8.5 in 2.2.15. 2.2.14 still shipped phpstan_turbo-8.5-zts.so; from 2.2.15 on, turbo-ext/linux-gnu-x86_64/ has only non-ZTS builds plus 8.6-zts.

Would upgrading fix it? No. The newest release, 2.3.0, has the same set of builds: no 8.5-zts on Linux. Any one of these would bring turbo back:

Is it possible to bring back the php8 zts builds?

PHP runtime version: 8.5.11
PHP version for analysis: 8.5 (from config.platform.php in composer.json)

PHPStan version: 2.2.17
PHPStan running from:
/home/www/app/vendor/phpstan/phpstan

Extension installer:
composer/pcre: 3.4.0
phpat/phpat: 0.12.5
phpstan/phpstan-deprecation-rules: 2.0.5
phpstan/phpstan-doctrine: 2.0.28
phpstan/phpstan-phpunit: 2.0.19
phpstan/phpstan-strict-rules: 2.0.12
phpstan/phpstan-symfony: 2.0.20
shipmonk/dead-code-detector: 1.4.2
shipmonk/phpstan-baseline-per-identifier: 2.3.0
spaze/phpstan-disallowed-calls: v4.14.0
staabm/phpstan-todo-by: 0.3.5
tomasvotruba/type-coverage: 2.4.0

Included configs from Composer packages:
tomasvotruba/type-coverage (packages/type-perfect/config/extension.neon): 2.4.0
spaze/phpstan-disallowed-calls (disallowed-dangerous-calls.neon): v4.14.0
spaze/phpstan-disallowed-calls (disallowed-execution-calls.neon): v4.14.0
spaze/phpstan-disallowed-calls (disallowed-insecure-calls.neon): v4.14.0
spaze/phpstan-disallowed-calls (disallowed-loose-calls.neon): v4.14.0

Discovered Composer project root:
/home/www/app

System resources:
Detected CPU cores:        24
Load limit:                1
KUBERNETES_CPU_LIMIT:      none
Available after limits:    24
cgroup CPU quota:          none
Usable CPU cores:          24

Turbo extension: not loaded
Turbo platform: linux-gnu-x86_64 (os: Linux, machine: x86_64, libc: gnu, php: 8.5, zts: yes, debug: no)
Turbo worker binary: none found
Turbo trusted types: off (extension inactive)

Parallel worker creation:
Mechanism:                 spawn (react/child-process)
Reason fork not used:      running from a phar without the active turbo extension (its fork guard protects phar:// reads in forked children)
Worker -d entries:
  opcache.enable=1
  opcache.enable_cli=1
  opcache.jit=disable
  opcache.jit_buffer_size=0
  opcache.validate_timestamps=0
  opcache.file_update_protection=0
  opcache.max_file_size=0
  opcache.file_cache=
  opcache.save_comments=1
  opcache.optimization_level=0x7FFEBFFF
  opcache.memory_consumption=256
  opcache.interned_strings_buffer=64
  opcache.max_accelerated_files=20000
  phpstan.restarted=1

Doctrine's objectManagerLoader: In use
Detected driver: pdo_pgsql
Installed Doctrine packages:
doctrine/dbal: 4.5.0
doctrine/orm: 3.7.2
doctrine/common: 3.5.0
doctrine/collections: 3.1.0
doctrine/persistence: 4.2.0

Symfony's consoleApplicationLoader: In use

Code snippet that reproduces the problem

No response

Expected output

I would "expect" it to be loaded

Did PHPStan help you today? Did it make you happy in any way?

No response

Activity

  1. mergeable commented on Oct 7, 2026

    @mergeable

    This bug report is missing a link to reproduction at phpstan.org/try.

    It will most likely be closed after manual review.

  2. ondrejmirtes commented on Oct 8, 2026

    @ondrejmirtes
    Member

    I'll readd ZTS back: phpstan/phpstan-src#6706

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions