怎样安装ionCube loader

2016年6月29日 | 分类: 【技术】

【介绍】

ionCube是用来加密PHP的工具。ionCube Encoder可以把PHP源代码转换成ByteCode。

进行加密授权处理后的PHP代码就不再开源了,必须使用ionCube loader才可以执行加密过的PHP代码。

PHP本身不带ionCube loader模块,必须到ionCube网站下载。ionCube loader是免费的,但是Encoder是需要付费的(起价$199)。

【安装(源码)】

ioncube的安装不需要编译,只需要下载、解压,移动到/usr/local。

64位系统:http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
32位系统:http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz

以64位系统CentOS7上安装上为例:

wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz && tar xvfz ioncube_loaders_lin_x86-64.tar.gz && mv ioncube /usr/local/ioncube

php.ini:

/usr/local/ioncube/ 目录下有一系列.so文件,版本号是与当前服务器上的PHP版本相对应的,务必保证一致。
带ts的表示 Thread Safety => enabled 情况下所需的文件。如果文件不匹配,将导致ioncube加载失败。

查看PHP版本:

php -v

输出:

PHP 7.3.0 (cli) (built: Dec 26 2018 02:21:49) ( ZTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies

查看Thread Safety状态:

php -i | grep "Thread Safety" -i

输出:

Thread Safety => enabled

可以确定使用 ioncube_loader_lin_7.3_ts.so 这个文件。

然后编辑 php.ini:

打开 /usr/local/php/etc/php.ini ,在最后一行加入如下代码:

; [ionCube Loader]
zend_extension=/usr/local/ioncube/ioncube_loader_lin_7.3_ts.so

重启 Apache :

service httpd stop
service httpd start

然后查看版本,看是否正常加载ioncube:

php -v

输出:

PHP 7.3.0 (cli) (built: Dec 26 2018 02:21:49) ( ZTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
    with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.3.1, Copyright (c) 2002-2018, by ionCube Ltd.

【安装(Web向导)】

参考:https://blog.csdn.net/forLightWay/article/details/78888583

ionCube官方提供了一个安装向导程序,可以帮助检测php的运行环境。

下载:http://www.ioncube.com/loader-wizard/loader-wizard.zip
支持:php5.3、php5.4、php5.5、php5.6、php7.0版本

解压移动到指定目录:

wget http://www.ioncube.com/loader-wizard/loader-wizard.zip && unzip loader-wizard.zip && cd ioncube

运行loader-wizard.php程序: + /ioncube/loader-wizard.php

1. 根据这个向导程序的提示,下载相应的解密软件
2. 将下载下来的解密软件放在它指定的目录中
3. 下载向导程序计算出来新的php.ini文件,替换系统原来的php.ini文件
4. 重新启动apache

重启后,点击页面第五步给出的那个链接,就会看到是否成功啦。

【安装(Atomic库)】

参考:http://www.laozuo.org/1940.html

Atomic源支持Fedora,RHEL和CentOS的YUM包管理。

清单:http://www.atomicorp.com/channels/atomic/

需要先安装Atomic库,然后安装ionCube PHP Loader:

wget -q -O - http://www.atomicorp.com/installers/atomic | sh
yum install php-ioncube-loader

安装完后在 /etc/yum.repos.d/ 目录会有一个 atomic.repo 文件。

【排错】

报错:undefined symbol: pow_function

如果PHP版本不一致,报错“undefined symbol: pow_function”:

Failed loading /usr/local/ioncube/ioncube_loader_lin_5.6_ts.so:  /usr/local/ioncube/ioncube_loader_lin_5.6_ts.so: undefined symbol: pow_function
PHP 5.5.35 (cli) (built: May 25 2016 16:50:23)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

报错:undefined symbol: executor_globals

如果 Thread Safety => enabled ,在php.ini中却引用 不带 “ts”的文件,报错“undefined symbol: executor_globals”:

Failed loading /usr/local/ioncube/ioncube_loader_lin_5.5.so:  /usr/local/ioncube/ioncube_loader_lin_5.5.so: undefined symbol: executor_globals
PHP 5.5.35 (cli) (built: May 25 2016 16:50:23)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

报错:ionCube会和Zend Optimizer发生冲突

如果以前装有Zend Optimizer,安装ionCube会和Zend Optimizer发生冲突,不过在php.ini添加代码的时候,将上面的添加到zend那一行之前就好了。

报错:Cannot load the ionCube PHP Loader

如果PHP已升级,会有兼容性导致的报错:

Cannot load the ionCube PHP Loader - it was built with configuration API220121212,TS, whereas running engine is API220131226,TS

参考:https://www.sothink.cn/archives/2014/10/cannot-load-the-ioncube-php-loader.html

需要使用 locate 命令确认适配版本的ioncube程序的位置,并在 php.ini 中更新。

参考:http://amon.org/locate

【参考】

参考:http://lxy.me/centos-install-ioncube-php-loader
参考:http://my.oschina.net/u/256646/blog/174211
参考:http://forum.ioncube.com/viewtopic.php?t=171
参考:http://serverfault.com/questions/746305/issue-installing-ioncube-with-php-5-6-11-with-apache-2-4-16-on-centos-6-7