如果你想让你的PHP环境同时支持ioncube和Zend Guard,这个非常容易实现,本文主要讲解如何在Linux服务器上安装Zend Guard Loader和ionCube Loader。
本文测试的环境是是PHP5.3 和 64位的Linux CentOS系统,你可以根据实际的环境进行参考本文,由于PHP5.3以后放弃Zend Optimizer,可以查看Linux ZendOptimizer 3.3.9 安装方法。
通过本文的教程,你可以实现如下的结果。
phpinfo() 头部显示ionCube PHP Loader和Zend Guard Loader,表明安装成功。
phpinfo() 安装ionCube成功,会显示ionCube Loader 模块。
phpinfo() 安装Zend Guard成功,会显示Zend Guard Loader 模块。
请通过以下命令进行安装:
[root@localhost Zend]# wget http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
[root@localhost Zend]# tar -zxvf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
[root@localhost ioncube]# vi /etc/php.ini
[Zend Guard Loader]zend_extension=/usr/local/lib/Zend/ZendGuardLoader.so
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
注意:如果你的Linux服务器是32位的,使用后面的命令进行下载 ZendGuardLoader。
wget http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
如果是PHP其他版本,可以到 http://www.zend.com/en/products/guard/downloads?platform=Linux 选择对应的文件。
[root@localhost ioncube]# http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
[root@localhost ioncube]# tar -zxvf ioncube_loaders_lin_x86-64.tar.gz[Ioncube Loader]
zend_extension=/usr/local/lib/ioncube/ioncube_loader_lin_5.3.so
如果是PHP其他版本或者32位的Linux服务器,可以到 http://www.ioncube.com/loaders.php 选择对应的文件。
如果通过phpinfo() 并没有加载ionCube Loader,可以通过以下命令测试:
[root@localhost ioncube]# php -v
PHP Fatal error: [ionCube Loader] The Loader must appear as the first entry in the php.ini file in Unknown on line 0
解决方法是把ZendGuardLoader.so和ioncube_loader_lin_5.3.so放在php.ini的顶部。
[PHP]
zend_extension=/usr/local/lib/ioncube/ioncube_loader_lin_5.3.so
zend_extension=/usr/local/lib/Zend/ZendGuardLoader.so
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
这个错误非常奇怪,通过php -v可以获取到ZendGuard Loader,但是phpinfo()却加载不上。
[root@localhost ~]# php -v
PHP 5.3.3 (cli) (built: Jan 11 2012 19:53:01)Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with the ionCube PHP Loader v4.4.3, Copyright (c) 2002-2013, by ionCube Ltd., and with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies
注意这个错误,PHP并不会直接报错,而是要通过Apache或者Nginx的error_log文件获取错误信息。如果你的phpinfo() 未加载ZendGuard Loader,可能在/var/log/httpd/error_log文件中可以看到这一行错误:
[Mon Oct 07 08:58:52 2013] [notice] caught SIGTERM, shutting down
Failed loading /usr/local/lib/Zend/ZendGuardLoader.so: /usr/local/lib/Zend/ZendGuardLoader.so: cannot enable executable stack as shared object requires: Permission denied
这个错误的原因是因为安全问题,Linux的SELinux处于开启状态,将其关闭即可解决问题。
[root@localhost~]# echo 0 >/selinux/enforce
[root@localhost~]# service httpd restart
如果你对本文的方法有什么见解,请一定在评论中留言。
另外,本人提供ionCube的加密服务,可以查看IonCube加密PHP程序
本文的安装方法主要参考了以下的2篇技术文章:
本文用到的php.ini配置文件