Missing PHP Extension Errors (intl, zip, imagick, ioncube)

Missing PHP Extension Errors (intl, zip, imagick, ioncube)

Tested on 12 October 2026 in a ShoHost sandbox with PHP 8.4 (command line). We triggered the errors with extensions that are missing or turned off.

Apps tell you an extension is missing in different ways: an installer’s requirement list, a WordPress Site Health notice, or a fatal error like Class "NumberFormatter" not found or Call to undefined function mb_strlen(). The fix is to turn the extension on for the PHP version your site uses.

Terminal: php -m shows no intl, imagick or imap; creating a NumberFormatter fails with Class NumberFormatter not found; Imagick and ionCube are not loaded
What a missing extension looks like: a ‘class not found’ or ‘undefined function’ error.
Diagram matching PHP error messages to the extension to enable: intl, zip, imagick, mbstring or imap, and ionCube Loader
Match the error to the extension.
  • Class "NumberFormatter" not found: enable intl.
  • Class "ZipArchive": enable zip.
  • Class "Imagick": enable imagick (apps usually fall back to gd).
  • Undefined function mb_*() or imap_*(): enable mbstring or imap (imap is not in core PHP 8.4).
  • requires the ionCube PHP Loader: install the ionCube Loader, in a version that supports your PHP.

Turn on an extension in cPanel

  1. Open Software → Select PHP Version (on CloudLinux servers).
  2. Check the Current PHP version is the one your site uses. Extensions are set per version.
  3. Open the Extensions tab and tick the one you need, for example intl, zip or imagick. It saves straight away.
  4. Reload the site. For the command line (cron, Composer), the same selection applies on most CloudLinux servers.
Terminal: with no php.ini loaded, new ZipArchive fails with class not found, and loading the zip extension makes it work
Loading the extension is the fix. In cPanel you tick it in Select PHP Version.

If you only see MultiPHP Manager and no extension list, the server uses EasyApache’s PHP builds, and extensions are installed by the host. Ask support for the extension and the PHP version.

The usual suspects

  • intl: needed by many apps for currency and date formats (NumberFormatter, IntlDateFormatter).
  • zip: for plugin and theme updates, backups and imports (ZipArchive).
  • imagick: better image resizing in WordPress and others. Without it, apps usually fall back to gd.
  • mbstring, curl, gd, xml: needed by most PHP apps.
  • imap: for apps that import email. PHP 8.4 moved it out of core PHP into a separate (PECL) package, so it is missing on many 8.4 setups; use PHP 8.3 for that app if your host doesn’t offer it.
  • ionCube Loader: for encoded scripts such as WHMCS. The ionCube version must support your PHP version; a new PHP release often needs a newer loader.

Check what is loaded

Create info.php in public_html containing <?php phpinfo();, open it, search for the extension, then delete the file. It shows server details you don’t want public.

FAQ

I ticked the extension but the error remains. Why?

The site may use a different PHP version than the one you edited, or a .htaccess or .user.ini line sets another version. Check the version in phpinfo.

Can I install an extension myself on shared hosting?

Only those listed in Select PHP Version. Anything else needs the host.

Why does the site work but cron shows the error?

Cron can use a different PHP binary. Use the full path to the same PHP version in the cron command.

Not sure which extension your app is asking for? On ShoHost, send the error to +91 94880 91432 on WhatsApp and we’ll turn on the right one with you.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *