PHP Extensions

/jabali-admin/php-extensions. Server-wide PHP extension manager (M9.6, ADR-0031). Installs and enables PHP extensions across every managed PHP version.

Scope

Server-wide, not per-user. An extension enabled here is available to every domain on every PHP version it ships for. Per-user PHP runtime tuning (memory_limit, upload_max_filesize, etc.) lives in PHP Settings; this page is the install plane.

What it lists

For every PHP version installed on the host (default 8.4; others added at install time via JABALI_PHP_VERSIONS), the table shows:

  • Extension name (imagick, redis, gnupg, xdebug, …).
  • Source — distro package (php-<ext> from Sury) or PECL build.
  • Installed version.
  • Per-PHP-version state — checked = enabled, unchecked = installable, dash = not available for that PHP version.

Actions

  • Install — fetches the package (or builds from PECL when no distro package exists) and writes the .ini to enable it.
  • Uninstall — removes the package and .ini entries.
  • Apply changes — schedules a reconcile that:
    1. Restarts the affected PHP-FPM pools.
    2. Reloads the panel runtime so phpinfo() reflects the change.

Behind the scenes

  • Distro-shipped extensions are pulled from the Sury repository (packages.sury.org/php).
  • PECL extensions are built into a per-version sandbox under /var/lib/jabali/phpext/<version>/ and enabled via /etc/php/<version>/mods-available/<ext>.ini + phpenmod.
  • FPM pool restart is throttled to avoid restart storms when multiple extensions are toggled at once.

Common operations

Goal Action
Install imagick for all PHP versions Tick every box in the imagick row → Apply changes.
Roll out redis for PHP 8.4 only Tick the redis × 8.4 box → Apply changes.
Try xdebug on a staging PHP version Install only the PHP version’s box; remember to uninstall before going live.

Caveats

  • Some PECL extensions require system libraries (libmagickwand-dev, libcurl4-openssl-dev). The installer pulls these in when needed; if the build fails, the error message names the missing system package.
  • Enabling Xdebug system-wide will slow every site running on that PHP version. Use the per-PHP-version toggle to scope it.

CLI

jabali admin php-ext list
jabali admin php-ext install <ext> --version <php-version>
jabali admin php-ext apply

See internal/phpext/ in the panel-api repo for the registry and build logic.