使用fastcgi、Zend Optimizer3.3.3、PHP5.2.17,有如下问题:
- 使用“非线程版本”(php-5.2.17-nts-Win32-VC6-x86.zip),会提示:Zend Optimizer not installed
- 使用“安全线程版本”(php-5.2.17-Win32-VC6-x86.zip),则会提示:fastcgi error 500错误
php环境各软件版本选择:
MySql 版本,对于环境搭建的成败没太大影响。
主要是PHP的选择,有以下原则:
- 如果程序为zend加密,那么php5.3以上的版本则不能选择,因为php5.3起不支持Zend Optimizer,需要使用zend loader,详情:http://www.4wei.cn/archives/1001038 。
- 如果程序有zend加密,那么不能选择非线程安全版,微软的说法是 fastcgi使用非线程安全版PHP执行效率会更高,也推荐的是非线程安全版,但是,非线程安全版却不支持zend。
也就是说如果要使用zend,运行fastcgi模式 必须选择“安全线程版本”。
在Linux下,也会出现这样的情况,当你使用CGI且在phpinfo中提示有“Thread Safety disabled”的时候,就表示你的系统无法支持ZendOptimizer,访问Zend加密过的文件就会出现“500 Internal Server Error”。
推荐环境:
- 可以将PHP编译成apache的模块,简单方便
- CGI+线程安全模式
解决办法
1,在网站根目录建立php5.ini,如果已经存在,则不用建立
2,在php5.ini中输入以下内容
1
2
3
4
5
6
7
8
|
apc.enabled=0
[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3
zend_extension=/usr/local/Zend/lib/Optimizer-3.3.3/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3/ZendExtensionManager_TS.so
|
解释
apc.enabled=0
GD默认支持apc加速,但由于apc与Zend Optimizer等软件有冲突,需要将apc禁用,apc.enabled=0即将apc关闭
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3
zend_extension=/usr/local/Zend/lib/Optimizer-3.3.3/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3/ZendExtensionManager_TS.so
加载Zend Optimizer相关模块