» 您尚未 登录   注册 | 社区服务 | 帮助 | 社区 | 无图版


常州五颜六色网络技术有限公司 -> 技术文档 -> Apache2+PHP5不能加载Zend Optimizer的问题
 XML   RSS 2.0   WAP 

--> 本页主题: Apache2+PHP5不能加载Zend Optimizer的问题 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题
deserts


头衔:大客部大客部
该用户目前不在线
级别: 总版主
精华: 0
发帖: 606
威望: 2 点
金钱: 1060 RMB
贡献值: 0 点
在线时间:1759(小时)
注册时间:2006-01-01
最后登录:2024-03-22
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子

Apache2+PHP5不能加载Zend Optimizer的问题

安装没有问题,但是不能加载。到Apache的日志目录,查看error日志。可以看到一些报错信息:
QUOTE:
PHP Warning: Zend Optimizer does not support this version of PHP - please upgrade to the latest version of Zend Optimizer in Unknown on line 0
[Sat Apr 28 17:56:47 2007] [notice] Apache configured -- resuming normal operations
[Sat Apr 28 18:00:01 2007] [notice] SIGUSR1 received. Doing graceful restart
Failed loading /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: undefined symbol: compiler_globals
Failed loading /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: undefined symbol: compiler_globals
[Sat Apr 28 18:00:01 2007] [notice] Digest: generating secret for digest authentication ...
[Sat Apr 28 18:00:01 2007] [notice] Digest: done
[Sat Apr 28 18:00:01 2007] [notice] Apache configured -- resuming normal operations
[Sat Apr 28 18:04:15 2007] [notice] SIGUSR1 received. Doing graceful restart
Failed loading /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: undefined symbol: compiler_globals
Failed loading /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: undefined symbol: compiler_globals
Failed loading /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: undefined symbol: compiler_globals
Failed loading /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: undefined symbol: compiler_globals
[Sat Apr 28 18:04:16 2007] [notice] Digest: generating secret for digest authentication ...
[Sat Apr 28 18:04:16 2007] [notice] Digest: done
[Sat Apr 28 18:04:16 2007] [notice] Apache configured -- resuming normal operations

其中最突出的一条记录是:
QUOTE:
PHP Warning: Zend Optimizer does not support this version of PHP - please upgrade to the latest version of Zend Optimizer in Unknown on line 0

还有一条突出的是:
QUOTE:
/usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so: undefined symbol: compiler_globals
Failed loading /usr/local/Zend/lib/Optimizer_TS-3.2.6/php-5.2.x/ZendOptimizer.so:


原因分析
老实说,这个问题以前也没有遇到过。安装配置过不少Apache2+PHP5+ZendOptimizer,但是没有遇到这个情况。于是以compiler_globals作为关键字,在google上搜索,找答案。

后来找到一个来自Zend.com上的链接,进去后,得到了解答。

原文连接:
QUOTE:
http://www.zend.com/forums/index.php?t=msg&goto=9604&S=

其中有一位朋友的留言,说明了问题:
QUOTE:
i just notice that Zend Optimizer only support prefork mode.

Supported Web Servers:

Apache 1.3.x
Apache 2.0.x (Prefork mode only)
Apache 2.2.x (Prefork mode only)
IIS 5, 6

if you want to install Zend Optimizer ,hope this help you.

也就是说,导致加载ZendOptimizer失败的原因,是因为编译安装Apache2的时候,指定了worker模式 --with-mpm=worker ,Apache2运行在线程模式下。而ZendOptimizer只支持进程模式。也就是Apache2的prefork模式 --with-mpm=prefork 。

于是查看当前的Apache2是否支持了worker模式:
QUOTE:
# httpd -l
Compiled in modules:
core.c
worker.c
http_core.c
mod_so.c

果然,是支持worker模式。

解决办法
其实解决的办法很简单,只需要按照下面三个步骤进行,就可以了:

  • 以 --with-mpm=prefork 参数重新编译安装Apache2
  • 重新编译安装PHP
  • 重新安装ZendOptimizer

在程序都重新编译安装完后,重启Apache,就可以了。

一些思考
所谓“鱼肉与熊掌,两者不可兼得”,目前Apache2+PHP,ZendOptimizer就只支持prefork模式。两者之间只能由使用者自己根据自己的实际需求来抉择了。

希望zend尽快开发出支持Apache worker模式的ZendOptimizer吧。


常州电信/网通机房,100M共享/10M独享/1000M共享/100M独享/电信+网通双线路服务器托管

Tel:0519-89991155 企业QQ:4006023839   5y6s Inc.
[楼 主] | Posted: 2007-10-08 13:12 顶端

常州五颜六色网络技术有限公司 -> 技术文档



Copyright © 2005-2009 5y6s Inc. 苏ICP备05001866号 Powered by PHPWind 5.0.1
Total 0.025125(s) query 6, Gzip enabled
会员言论不代表本站立场 本站法律顾问:北京汇泽律师事务所 韩律师
QQ:点击这里给我发消息 /点击这里给我发消息 /点击这里给我发消息