• Please be aware: Kaspersky Anti-Virus has been deprecated
    With the upgrade to Plesk Obsidian 18.0.64, "Kaspersky Anti-Virus for Servers" will be automatically removed from the servers it is installed on. We recommend that you migrate to Sophos Anti-Virus for Servers.
  • The Horde webmail has been deprecated. Its complete removal is scheduled for April 2025. For details and recommended actions, see the Feature and Deprecation Plan.
  • We’re working on enhancing the Monitoring feature in Plesk, and we could really use your expertise! If you’re open to sharing your experiences with server and website monitoring or providing feedback, we’d love to have a one-hour online meeting with you.

Resolved Cron error - Ioncube loader

alinthda

New Pleskian
Hello everyone,

Since an update of plesk (17.8.11 n ° 6), I receive cron emails about ioncube:


From: [email protected] (Cron Daemon)
To: [email protected]


Subject: [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime)

Failed loading /usr/lib/php5/20121212/ioncube_loader_lin_7.0.so: /usr/lib/php5/20121212/ioncube_loader_lin_7.0.so: undefined symbol: zend_ce_division_by_zero_error
Failed loading /usr/lib/php5/20121212/ioncube_loader_lin_7.0.so: /usr/lib/php5/20121212/ioncube_loader_lin_7.0.so: undefined symbol: zend_ce_division_by_zero_error
Failed loading /usr/lib/php5/20121212/ioncube_loader_lin_7.0.so: /usr/lib/php5/20121212/ioncube_loader_lin_7.0.so: undefined symbol: zend_ce_division_by_zero_error



My system:
-Ubuntu server 14.04
- Plesk onyx 17.8.11 n ° 6

If anyone can help me, thanks in advance
and sorry for my bad English :)
 
Try to fix it with command

# dpkg-reconfigure php5-ioncube-loader
 
I already tried, it does not work.
But, The problem just disappeared by updating ubuntu 14.04 => 16.04
 
I've got nearly the same error, but was not able to upgrade the server 14.04 => 16.04 at the moment. Therefore I had to investigate a little bit. Now I want to tell the solution that works for me. Perhaps it may be helpful for someone other.

Short version:
Cause of the error is a mismatch between used php-version and ioncube-version given by php.ini thru maintenance script.
Changed the script in /usr/lib/php/maxlifetime to use the command 'php' instead of 'php5' solved the issue.

Long version - The whole story in detail:
Behavior:
The error was shown ONLY by cron-service. Normal php-operations from commandline or web-pages are all ok without errors.
php -v shows me that php 7.1 is working and normal ioncube loading without problems:

$ php -v
PHP 7.1.20 (cli) (built: Jul 20 2018 16:08:02) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.2.1, Copyright (c) 2002-2018, by ionCube Ltd.
with Zend OPcache v7.1.20, Copyright (c) 1999-2018, by Zend Technologies


But testing the script /usr/lib/php/maxlifetime at commandline gives the same error like the cron-script:
$ /usr/lib/php5/maxlifetime
Failed loading /usr/lib/php5/20121212/ioncube_loader_lin_7.1.so: /usr/lib/php5/20121212/ioncube_loader_lin_7.1.so: undefined symbol: zend_interrupt_function
Failed loading /usr/lib/php5/20121212/ioncube_loader_lin_7.1.so: /usr/lib/php5/20121212/ioncube_loader_lin_7.1.so: undefined symbol: zend_interrupt_function
Failed loading /usr/lib/php5/20121212/ioncube_loader_lin_7.1.so: /usr/lib/php5/20121212/ioncube_loader_lin_7.1.so: undefined symbol: zend_interrupt_function
24


Why get (nearly) nobody else this error? And why he disappeared after system-upgrade as shown above?
This is because I - and perhaps User alinthda too - had before manual changed the php-version used at the commandine.

Plesk stores its own php installations in /opt/plesk/php/{version} and in the GUI it is possible to choose one of them for the virtual-host-config.
At the commandline is normally not the plesk version, but the OS-Vendor-version active. For ubuntu 14.04 it was some sort of php5.
But to use composer at cli for my drupal installation, the php-version at cli have to match the version at the virtuall host to avoid that composer loads wrong libraries and the site crashes.

In ubuntu 14.04 the /usr/bin/php command is not the command itself, but a symlink at /etc/alternatives/php, which again is a symlink at /usr/bin/php5.
Therefore, if you type php, the system calls /usr/bin/php5.
I had changed this with a symlink to plesk's php 7.1, which was used for the virtual host.
# ln -s /opt/plesk/php/7.1/bin/php /etc/alternatives/php

The maintenance-script /usr/lib/php5/maxlifetime don't use the long way /usr/bin/php => /etc/alternatives/php => /usr/lib/php5 but calls php5 directly. It goes wrong, because this do not respect the new target of the php command and the ini-files now are for the 7.1 version.

Line 8 of /usr/lib/php5/maxlifetime in original is:
cur=$(php5 -c /etc/php5/${sapi}/php.ini -d "error_reporting='~E_ALL'" -r 'print ini_get("session.gc_maxlifetime");')

Now I removed the first number 5:
cur=$(php -c /etc/php5/${sapi}/php.ini -d "error_reporting='~E_ALL'" -r 'print ini_get("session.gc_maxlifetime");')

therefore the command goes the long way via /etc/alternatives and calls /opt/plesk/php/7.1/bin/php, wich match php.ini for 7.1 and command-version 7.1, and ioncube-loader for 7.1 is happy again.
Issue solved.

Hopefully my manipulation will not cause other side effects. At the moment I cannot se some.
 
Back
Top