Apache2+PHP5不能加载Zend Optimizer的问题
生活随笔
收集整理的這篇文章主要介紹了
Apache2+PHP5不能加载Zend Optimizer的问题
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
http://zxianf.blog.163.com/blog/static/30120701201011292152958/
以 --with-mpm=prefork 參數(shù)重新編譯安裝Apache2 重新編譯安裝PHP 重新安裝ZendOptimizer
在程序都重新編譯安裝完后,重啟Apache,就可以了。
問(wèn)題現(xiàn)象
安裝沒(méi)有問(wèn)題,但是不能加載。到Apache的日志目錄,查看error日志。可以看到一些報(bào)錯(cuò)信息: 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 其中最突出的一條記錄是: 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 還有一條突出的是: /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:原因分析
老實(shí)說(shuō),這個(gè)問(wèn)題以前也沒(méi)有遇到過(guò)。安裝配置過(guò)不少Apache2+PHP5+ZendOptimizer,但是沒(méi)有遇到這個(gè)情況。于是以compiler_globals作為關(guān)鍵字,在google上搜索,找答案。 后來(lái)找到一個(gè)來(lái)自Zend.com上的鏈接,進(jìn)去后,得到了解答。 原文連接: http://www.zend.com/forums/index.php?t=msg&goto=9604&S= 其中有一位朋友的留言,說(shuō)明了問(wèn)題: 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. 也就是說(shuō),導(dǎo)致加載ZendOptimizer失敗的原因,是因?yàn)榫幾g安裝Apache2的時(shí)候,指定了worker模式 --with-mpm=worker ,Apache2運(yùn)行在線程模式下。而ZendOptimizer只支持進(jìn)程模式。也就是Apache2的prefork模式 --with-mpm=prefork 。 于是查看當(dāng)前的Apache2是否支持了worker模式: # httpd -l Compiled in modules:core.cworker.chttp_core.cmod_so.c 果然,是支持worker模式。解決辦法
其實(shí)解決的辦法很簡(jiǎn)單,只需要按照下面三個(gè)步驟進(jìn)行,就可以了:在程序都重新編譯安裝完后,重啟Apache,就可以了。
一些思考
所謂“魚肉與熊掌,兩者不可兼得”,目前Apache2+PHP,ZendOptimizer就只支持prefork模式。兩者之間只能由使用者自己根據(jù)自己的實(shí)際需求來(lái)抉擇了。 希望zend盡快開發(fā)出支持Apache worker模式的ZendOptimizer吧。 取自"http://wiki.isyi.com/wiki/Apache2%2BPHP5%E4%B8%8D%E8%83%BD%E5%8A%A0%E8%BD%BDZend_Optimizer%E7%9A%84%E9%97%AE%E9%A2%98"轉(zhuǎn)載于:https://blog.51cto.com/summervast/587060
總結(jié)
以上是生活随笔為你收集整理的Apache2+PHP5不能加载Zend Optimizer的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 准备辞职了,走之前想解决的问题ptr
- 下一篇: hexdump, hexedit 使用指