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