2

I have been struggling with the above problem for days. I need the ioncube_loader for my Shopware (version 5.3.2 with PHP version 7.1.8). The server on which Shopware runs has PHP version 5.6.40!

Inside the shop I am told that I am using the ionCube Loader but when I log in to the server via SSH the error occurs.

The following outputs are available for the following commands in the console:

PHP Version

[root@vh1 ~]# php -v
Failed loading /usr/lib64/php/modules/ioncube_loader_lin_7.1.so:  /usr/lib64/php/modules/ioncube_loader_lin_7.1.so: undefined symbol: zend_execute_ex
PHP 5.4.16 (cli) (built: Oct 30 2018 19:30:51) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

extension_dir

[root@vh1 ~]# php -i | grep extension_dir
Failed loading /usr/lib64/php/modules/ioncube_loader_lin_7.1.so:  /usr/lib64/php/modules/ioncube_loader_lin_7.1.so: undefined symbol: zend_execute_ex
extension_dir => /usr/lib64/php/modules => /usr/lib64/php/modules
PHP Warning:  Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in Unknown on line 0
sqlite3.extension_dir => no value => no value

set include

; Enable ioncube extension module
zend_extension = /usr/lib64/php/modules/ioncube_loader_lin_7.1.so

Can someone tell me what I did wrong? I can not find anything about the bug about Google.

undefined symbol: zend_execute_ex

Why zend_execute_ex? Where does it come from? Can the error occur due to the permissions?

[root@vh1 ~]# ll /usr/lib64/php/modules/
total 8940
-rwxr-xr-x 1 root root 1500368 16. Jul 11:11 ioncube_loader_lin_5.6.so
-rwxr-xr-x 1 root root 1366576 11. Jun 15:33 ioncube_loader_lin_7.1.so

EDIT:

As soon as I open the plugin manager in the backend of Shopware I get the following error:

The file /path/to/shop/engine/Shopware/Plugins/Community/Frontend/CoeVoucherUrl
/Bootstrap.php was encoded by the ionCube Encoder
 for PHP 5.6 and cannot run under PHP 7.1 or later.
Please ask the of the script to provide a version
encoded with the ionCube Encoder for PHP 7.1.

File:Unknown
Paulo Boaventura
  • 1,365
  • 1
  • 9
  • 29
Premox
  • 323
  • 10
  • 25

1 Answers1

2

The ioncube-version you are using is for php 7.1 and not for php 5.6. When using PHP 5.6 you need the ioncube_loader_lin_5.6.so. It's provided with the current loader-packages as well. You need to make sure the loader version is compatible with your php-version. The error message already states, that you are using the encoder for php 7.1.

On most servers php versions are different between CLI and Web, so you need to make sure the CLI is using the same version as the webserver and the ioncube version is compatible with it. Sometimes there are possibilities to call different php versions via cli by adding the version number (like php7.1 ...).

On to of that, you can't use any plugin from the shopware store that is encrypted with php 7.1+, since the encryption of the store only supports 5.6 and 7.0. If you want to use php 7.1, you need to make sure there are no encrypted plugins in your system. In this case the plugin manager will work again.

https://docs.shopware.com/en/shopware-5-en/update-guides/update-guide-shopware-55#but-i-still-have-encrypted-plugins

mnaczenski
  • 1,508
  • 7
  • 12
  • I also get the error `Failed loading /usr/lib64/php/modules/ioncube_loader_lin_5.6.so: /usr/lib64/php/modules/ioncube_loader_lin_5.6.so: undefined symbol: zend_execute_ex`. I'll check which version the web and CLI have and would report again whether it worked or not. Thanks for the answer in any case. Since Shopware already uses the PHP version 7.1.8, my endeavor with the ioncube_loader would not work at all because Shopware only supports encryption if the PHP version is <= 7.0? – Premox Jul 17 '19 at 08:13
  • 1
    yes, you can't use encrypted plugins in php 7.1 and newer. – mnaczenski Jul 17 '19 at 11:18
  • What exactly does that mean for me? I need the `ioncube_loader` for a plugin of a third party. Does that mean for me I can not use the `ioncube_loader` because `Shopware` has a higher >7.0 version of PHP? – Premox Jul 17 '19 at 11:57
  • You need to switch to php7.0 or php5.6 or don't use any plugins that are encrypted with ioncube. – mnaczenski Jul 22 '19 at 05:19
  • You should be able to use encrypted plugins with PHP 7.1 and above, however possibly not ones from the Shopware site because they haven't updated their system to generate compatible plugins. If you contact the Plugin manufacturer directly, they might either provide you with a version they have produced themselves for PHP 7 or give you an OpenSource version. Incidentally, the first error in your post is because you used PHP 5.4 with the Loader for PHP 7.1. CLI and Web versions of PHP *should* match, but it's not uncommon for versions to fall out of sync if a system isn't maintained well. – Nick Jul 22 '19 at 09:11