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.

Myles

Orlando, FL

Did this post help you?

Give back and rate it for me!

Related Posts