After upgrading PHP recently on a CentOS Linux server from PHP 5.2.X to PHP 5.3.X I ran into numerous minor issues. One of the issues was with a web application that requires the ionCube PHP Encoder libraries to function properly. After upgrading PHP I noticed some errors in the Apache error logs including the ionCube Apache module that was failing to load. Below I display the entire error from the Apache error_log file and how to easily resolve the issue by installing a single package via the Yum Package Manager.
ionCube PHP Encoder Module Loading Error In Apache Error Logs:
- Failed loading /usr/sbin/ioncube_loader_lin_5.2.so: /usr/sbin/ioncube_loader_lin_5.2.so: undefined symbol: zend_error_noreturn
- Failed loading /usr/sbin/ioncube_loader_lin_5.2.so: /usr/sbin/ioncube_loader_lin_5.2.so: undefined symbol: zend_error_noreturn
- Failed loading /usr/sbin/ioncube_loader_lin_5.2.so: /usr/sbin/ioncube_loader_lin_5.2.so: undefined symbol: zend_error_noreturn
- Failed loading /usr/sbin/ioncube_loader_lin_5.2.so: /usr/sbin/ioncube_loader_lin_5.2.so: undefined symbol: zend_error_noreturn
Verify php-ioncube-loader Package Available Via Yum Repos:
First verify the php-ioncube-loader package is available via one of your Yum repositories for the PHP version you have installed using the below example command as reference.
- [root@dev httpd]# yum list *IONCUBE*
- Loaded plugins: fastestmirror
- Loading mirror speeds from cached hostfile
- * addons: mirror.ubiquityservers.com
- * atomic: www4.atomicorp.com
- * base: dist1.800hosting.com
- * epel: mirrors.tummy.com
- * extras: styx.biochem.wfubmc.edu
- * rpmforge: ftp-stud.fht-esslingen.de
- * updates: mirror.raystedman.net
- Available Packages
- php-ioncube-loader.i386 1:3.3.20-3.el5.art atomic
- [root@dev httpd]#
In the above example the php-ioncube-loader package is available via the Atomic repo. Once verified the package can be installed by using the below command.
Install php-ioncube-loader Via Yum On CentOS Linux:
- [root@dev httpd]# yum install php-ioncube-loader
- Loaded plugins: fastestmirror
- Loading mirror speeds from cached hostfile
- * addons: mirror.ubiquityservers.com
- * atomic: www4.atomicorp.com
- * base: dist1.800hosting.com
- * epel: mirrors.tummy.com
- * extras: styx.biochem.wfubmc.edu
- * rpmforge: ftp-stud.fht-esslingen.de
- * updates: mirror.raystedman.net
- Setting up Install Process
- Resolving Dependencies
- --> Running transaction check
- ---> Package php-ioncube-loader.i386 1:3.3.20-3.el5.art set to be updated
- --> Finished Dependency Resolution
- Dependencies Resolved
- ====================================================================================================================================
- Package Arch Version Repository Size
- ====================================================================================================================================
- Installing:
- php-ioncube-loader i386 1:3.3.20-3.el5.art atomic 1.1 M
- Transaction Summary
- ====================================================================================================================================
- Install 1 Package(s)
- Upgrade 0 Package(s)
- Total download size: 1.1 M
- Is this ok [y/N]: y
- Downloading Packages:
- php-ioncube-loader-3.3.20-3.el5.art.i386.rpm | 1.1 MB 00:00
- Running rpm_check_debug
- Running Transaction Test
- Finished Transaction Test
- Transaction Test Succeeded
- Running Transaction
- Installing : php-ioncube-loader 1/1
- Installed:
- php-ioncube-loader.i386 1:3.3.20-3.el5.art
- Complete!
- [root@dev httpd]#
After the package is installed you should restart your web server for the changes to take. In this example the server is running Apache which can be restarted using the below command example.
Restart Apache For The ionCube Module To Load:
- [root@dev ~]# /etc/init.d/httpd restart
- Stopping httpd: [ OK ]
- Starting httpd: [ OK ]
- [root@dev ~]#
The ionCube loader error should no longer appear in the Apache error logs.