Fixing “PHP Startup: Unable to Load Dynamic Library 'intl'” on CWP Internal PHP 7.1 (Roundcube Spoofchecker Error)

How you can fix the “PHP Startup: Unable to load dynamic library 'intl'” error and Roundcube “Class 'Spoofchecker' not found” issue on AlmaLinux 8 / CentOS Web Panel (CWP) server.

This guide focuses on CWP’s internal PHP 7.1 and the intl/ICU 50 compatibility problem.

1. Identify that CWP is using internal PHP 7.1

/usr/local/cwp/php71/bin/php -v

 

Even if the CWP panel shows PHP 8.3 for websites, internal services like Roundcube usually run on:

/usr/local/cwp/php71/bin/php

 

2. Check intl module loading error

/usr/local/cwp/php71/bin/php -m

If you see a warning similar to:

PHP Warning: PHP Startup: Unable to load dynamic library 'intl' (tried: /usr/local/cwp/php71/lib/php/extensions/no-debug-non-zts-20170718/intl.so (libicui18n.so.50: cannot open shared object file: No such file or directory)) in Unknown on line 0

then the intl extension is compiled against ICU 50, which is missing on the system. 

3. Roundcube error: Spoofchecker class not found

In Roundcube logs you will see:

PHP Fatal error: Uncaught Error: Class 'Spoofchecker' not found in /usr/local/cwpsrv/var/services/roundcube/program/lib/Roundcube/rcube_spoofchecker.php on line 50

This happens because theSpoofcheckerclass is provided by the intl extension, which failed to load. 

4. Confirm intl.so exists and check its dependencies

First, verify that intl.so is present:

ls -l /usr/local/cwp/php71/lib/php/extensions/no-debug-non-zts-20170718/ | grep intl

Then check its linked libraries:

ldd /usr/local/cwp/php71/lib/php/extensions/no-debug-non-zts-20170718/intl.so
If you see:
libicui18n.so.50 => not found
libicuuc.so.50 => not found
libicudata.so.50 => not found
libicuio.so.50 => not found
libicutest.so.50 => not found
libicutu.so.50 => not found
then intl.so is compiled against ICU 50, which is missing.

5. Check existing ICU libraries

ls -l /usr/lib64 | grep libicu

If only ICU 60/69 libraries are present (e.g. libicui18n.so.60, libicui18n.so.69) and no ICU 50, intl.so cannot load.

6. Install ICU 50 compatibility package (Main Fix)

To satisfy intl.so dependencies, install ICU 50:

sudo dnf install libicu50 -y

This package provides the required ICU 50 libraries (libicui18n.so.50, libicuuc.so.50, libicudata.so.50, libicuio.so.50, libicutest.so.50, libicutu.so.50).

 7. Restart CWP services

systemctl restart cwpsrv
systemctl restart cwp-phpfpm

 
8. Verify intl is now loaded in CWP internal PHP

/usr/local/cwp/php71/bin/php -m | grep intl

If the output shows:

intl

then the intl extension is successfully loaded.

 9. Confirm Roundcube is working

Check Roundcube error logs again:

tail -n 50 /usr/local/cwpsrv/var/services/roundcube/logs/errors.log

The “Class 'Spoofchecker' not found” error should be gone, and Roundcube should load without Internal Server Error.

Summary

On CWP with AlmaLinux 8, the internal PHP 7.1 may ship with an intl extension compiled against ICU 50, while the system only has ICU 60/69. Installing thelibicu50package resolves the missing ICU 50 libraries, allowing intl.so to load, restoring the Spoofchecker class, and fixing both the PHP startup warnings and Roundcube errors.

Disclaimer: This full article is already publish on zirvesunucum website.

  • Unable to load dynamic library 'intl' in cwp
  • 0 Korisnici koji smatraju članak korisnim
Je li Vam ovaj odgovor pomogao?

Vezani članci

How to access server via Remote Desktop (RDP)?

Remote Desktop Protocol (RDP) is a proprietary protocol developed by Microsoft, which provides a...

How to install Let’s Encrypt on CentOS 7 with Apache?

Today, we will show you, How to install Let’s Encrypt on CentOS 7 with Apache. Let’s Encrypt is a...

Domains are not showing in WHM -> List accounts

We were unable to see any domains listed under WHM -> List Accounts. However, we can see the...

HOW TO INSTALL LITESPEED WEB SERVER IN LINUX SERVER?

Litespeed Cache is useful to increase high performance for your Wordpress Website. Following are...

Remove ONLY_FULL_GROUP_BY in my.cnf file

Remove ONLY_FULL_GROUP_BY in my.cnf file First you need to find my.cnf file location and then...