How to fix IonCube/ZendGuard “undefined symbol: executor_globals” after upgrading Apache and PHP

undefined symbol: executor_globals

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:

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):

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.


Orlando, FL

Did this post help you?

Give back and rate it for me!

Related Posts