ZendOptimizer已经不支持php 5.3.x了,本文将介绍如何在php 5.3.x中安装:Zend Guard Loader
Zend 官网:http://www.zend.com/en/products/guard/downloads
找到64位版本,也许您的是32位
下载可能需要注册一个账号。解压后,把里面的so文件上传的服务器中。
在安装前可以先阅读下README文件:
ZendGuardLoader installation instructions -------------------------------------------1.Extract the ZendLoaderpackage.2.Locateand extract the ZendGuardLoader.so (Linux)orZendLoader.dll (Windows) that corresponds to your php version.3.Add the following line to your php.ini file for loading the ZendGuardLoader:LinuxandMac OS X: zend_extension=<full_path_to_ZendGuardLoader.so>Windows non-thread safe: zend_extension=<full_path_to_ZendLoader.dll>4.Add an aditional line to your php.ini for enabling ZendGuardLoader;Enables loading encoded scripts.Thedefault value isOn zend_loader.enable=15.Optional: following lines can be added your php.ini file forZendGuardLoader configuration:;Disable license checks (for performance reasons) zend_loader.disable_licensing=0;TheObfuscation level supported byZendGuardLoader.The levels are detailed in the official ZendGuardDocumentation.0-no obfuscation is enabled zend_loader.obfuscation_level_support=3;Path to where licensed Zend products should look for the product license.For more information on how to create a license file, see the ZendGuardUserGuide zend_loader.license_path=6.If you useZenddebuggeras well, please make sure to load it after the Zend guard Loader7.If you use ioncube loader, please make sure to load it before Zend guard Loader8.Restart your Web server.
#将so文件复制到php的module文件夹中#自行把so文件弄到服务器上,如果是32位系统,则目标路径为/usr/lib/php/modules cp /opt/ZendGuardLoader.so /usr/lib64/php/modules/#更改文件权限为755 chmod 775/usr/lib64/php/modules/ZendGuardLoader.so #配置php,这里我选择在/etc/php.d下创建一个ini文件,也可以直接在php.ini中写 vim /etc/php.d/zendgl.ini #内容为: zend_extension=/usr/lib64/php/modules/ZendGuardLoader.so #重启web服务 service httpd restart
重启后,使用:php -v 命令查看是否成功&使用phpinfo,如果能看到类似,说明就成功了:
PHP Warning: Directive 'register_globals' is deprecated in PHP 5.3 and greater in Unknown on line 0
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies
注意,当SeLinux开启的时候,上述信息也许就看不到了,无法加载了,这是就需要在SeLinux开启权限。
当然如果您不需要SeLinux,可以把它关闭(具体方法自行search),现在看看我是如何解决Selinux权限问题的。
#安装setroubleshoot包,可以将因selinux权限问题发生的err写入日志文件(/var/log/messages),便于发现问题 yum install setroubleshoot*#安装完成后,重启auditd服务(setroubleshoot集成到了auditd服务中) service restart auditd #接着我们就要观察/var/log/message中的信息了 cat /var/log/messages | grep setroubleshoot #可以看到下列信息:Jan2717:01:42 localhost setroubleshoot:SELinuxis preventing /usr/sbin/httpd fromusing the execstack access on a process.For complete SELinux messages. run sealert -l a89898c7-12e5-4e3e-a186-df18818df43f #提示我们可以运行sealert -l a89898c7-12e5-4e3e-a186-df18818df43f查看详细信息 sealert -l a89898c7-12e5-4e3e-a186-df18818df43f #显示内容如下图
很轻松的知道了,该如何解决了,,运行:
setsebool -P httpd_execmem 1
再次重启httpd,检查zendguardloader是否被加载!
php -v 可以看查看到zendguardloader选项 phpinfo()里不显示,解决方法如下:
有的时候还有一些情况下 php -i 或php -v 在控制台下可以看到zend opt
但是 apache 执行phpinfo的输出里面却看不到
一般是因为 调用php的时候zend模块不能加载, 比如AS4里面 就是这样的
如as4下面默认的php安装后读取库文件的路径 是在/usr/lib下面 ,
而php.ini文件中加载zend模块是在zend安装路径的lib目录中
比如/usr/local/Zend/lib
这时apache在执行php时 不能加载zend模块 所以 在控制台里php -v 可以正常
但是apache 却没有加载zend。 解决办法 先把zend模块copy到
/usr/lib里面 然后改一下php.ini里面zend加载模块部分