How to fix IonCube/ZendGuard “undefined symbol: executor_globals” after upgrading Apache and PHP
Recently when updating a WHM/cPanel server to use the new version of Apache and PHP (Apache 2.4 & PHP 5.6), after everything completed, I kept getting errors even though I know the PHP modules for IonCube and ZendGuard were installed correctly … turns out there was another issue … and here’s how to fix it.
This is the error I kept getting when trying to load a site that requires the IonCube PHP library:
1 |
Site error: the file /home/website/public_html/clientarea.php requires the ionCube PHP Loader ioncube_loader_lin_5.6.so to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation. |
Which was weird, because I know for a fact that I made sure to enable/install IonCube when upgrading Apache and PHP. Turns out the issue was not due to the loader file not being installed, but due to undefined symbol: executor_globals error.
I was able to find this error by SSH into the server, and typing php -v
As you can see below, that is the exact error I was getting (and your should be similar):
1 2 3 |
root@server [/usr/local/IonCube]# php -v Failed loading /usr/local/IonCube/ioncube_loader_lin_5.6.so: /usr/local/IonCube/ioncube_loader_lin_5.6.so: undefined symbol: executor_globals Failed loading /usr/local/Zend/lib/Guard-7.0.0/php-5.6.x/ZendGuardLoader.so: /usr/local/Zend/lib/Guard-7.0.0/php-5.6.x/ZendGuardLoader.so: undefined symbol: executor_globals |
Turns out, this isn’t due to the PHP loader files, it was actually due to the fact that my original server configuration (for EasyApache), had Apache configured to use MPM Worker, which is NOT compatible with non-thread safe libraries! Doh!! (This includes mod_php)
So how do you fix this? Easy! Just go back into EasyApache (configure a new build), and make sure you select MPM Prefork (or any MPM compatible with non-thread safe libraries)… rebuild, and voila!
It’s always something simple isn’t it 😛
ALSO … if you’re using cPanel/WHM, check the /var/cpanel/easy/apache/rawopts/all_php5 file to make sure that it does NOT have -enable-maintainer-zts OR --enable-maintainer-zts in that file, otherwise you will still have issues.