shopex乱码问题最终原因解决办法:
Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非
线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍。
从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由
于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果
在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。
一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个
问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就
会出错搞垮IIS。因此在IIS下CGI模式才是PHP运行的最安全方式,但CGI模式对于每个HTTP请求都
需要重新加载和卸载整个PHP环境,其消耗是巨大的。
为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重
复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决
了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。
因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用
FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)
的版本能够更好的提高效率。
===========================================
最近重做服务器了, centos5.4 httpd2.2 php5.3, 在ZEND官方也没有找到支持php5.3的ZendOptimizer
暂时先不要换成5.3吧,好多对5.3还没有做到支持,不仅仅是ZendOptimizer
===========================================
shopex使用zend加密的,不安装zend就没办法显示。我是遇到过zend安装几遍都不成功的。然后现在更绝了,php5.3.3已经不支持zend了,所以请求开源。一个好的程序要想发展壮大,最终还是要开源的。
开源吧,PHP5.3.3都不支持zend了;PHP 5.3.x系列改用 Zend Guard Loader 模块了
===========================================
最近在使用shopex网店程序,发现了一个问题,我本想在Linux环境下搭建一个的,结果失败了...
shopex需要Zend的支持,因为Ta没有开源,用ZendOptimizer加密了的,所以我安装了Zend Optimizer,但是了依然不能安装,我就在想这到底是为什么呢?
最后终于找到原因了,Zend Optimizer暂时还不支持PHP5.3。Ubuntu默认安装的就是PHP5.3。所以没有办法安装,需要将PHP的版本降级后才能使用,悲剧啊!
不过也简单,网上有很多降级的办法,搞定就可以了,哈哈!
===========================================
PHP 5.3 下,Zend Optimizer 已经被全新的 Zend Guard Loader 取代
------------------------------------------------
1. 下载 Zend Guard Loader 压缩包。(官方下载地址:http://www.zend.com/en/products/guard/downloads)
2. 解压并提取 ZendGuardLoader.so(Linux)或 ZendLoader.dll(Windows),对应你的PHP版本。
3. 在你的 php.ini 文件添加下面一行,用来加载 Zend Guard Loader:
Linux 和 Mac OS X: zend_extension = 完整路径/ZendGuardLoader.so
Windows(非线程安全): zend_extension = 完整路径/ZendLoader.dll
4. 在 php.ini 额外新增一行,启用 Zend Guard Loader:
zend_loader.enable = 1
5. 可选:可以在 php.ini 文件添加以下行到 Zend Guard Loader 配置位置:
;禁用许可证检查(为了性能的原因)
zend_loader.disable_licensing = 0
;让 Zend Guard Loader 支持混淆级别。级别在 Zend Guard 的官方详细文档。 0 - 不启用混淆
zend_loader.obfuscation_level_support = 3
;从这个路径寻找Zend产品授权的产品许可证。欲了解更多有关如何创建一个许可证文件的信息,请参阅 Zend Guard 用户指南.
zend_loader.license_path =
6. 如果您使用 Zend debugger,请确保加载 Zend guard Loader。
7. 如果您使用 ioncube loader,请务必在它之前加载 Zend guard Loader。
8. 重新启动Web服务器。
=============================================================
Zend Optimizer3.3 优化配置指南
Zend Optimizer是由PHP核心引擎“Zend”创建者Zend技术公司所开的免费PHP优化软件。据Zend公司透露使用这个软件某些情况下至少可以提高性能30%以上!这么好的免费大餐当然要用,现在我们来谈谈如何配置这套软件。
ZendOptimizer 的安装是傻瓜化的,安装向导会自动根据你的选择来修改php.ini帮助你启动这个引擎。下面我们来介绍下ZendOptimizer的配置选项,帮助你 最大化自定义合理的配置。下边是我所用的配置文件,看不懂也不要着急,看完本文你就会完全明白。
[Zend]
zend_optimizer.optimization_level=1023
zend_optimizer.encoder_loader=0
zend_extension_ts="C:Program FilesZendlibZendOptimizer.dll"
现在我们来介绍下上边这个配置文件的含义:
zend_optimizer.optimization_level 《== 优化程度,这里定义启动多少个优化过程。
zend_optimizer.encoder_loader 《== 是否允许处理由Zend Encoder加密的PHP文件。
zend_extension_ts 《== 优化器所在目录。
优化过程 zend_optimizer.optimization_level 详细解释
这 里最为重点的部分,仔细看!ZendOpt总共有10个优化过程,从理论上说开的越多性能越好。当然,理论和实际永远都存在着差距。优化过程开启的越多对 性能消耗也相对也越大,ZendOpt的10个优化过程并不相同也就是说效果不是平均的。Zend公司定义的最高值(High模式)为15,这里15指的 是开启1-4号优化过程。当然,很多朋友并不满足于此,毕竟最高也只开启4个优化过程连总数的一半都没有。各个优化过程的对应的数字代码(值)如下:
不使用 0 <= 如果这样不如不装,还能节约点内存说!
优化过程1(PASS1) 1
优化过程2(PASS2) 2
优化过程3(PASS3) 4
优化过程4(PASS4) 8
优化过程5(PASS5) 16
优化过程6(PASS6) 32
优化过程7(PASS7) 64
优化过程8(PASS8) 128
优化过程9(PASS9) 256
优化过程10(PASS10) 512
以 何种方式开启优化过程是通过这些数字代码(值)相加所得的和作为此参数的参数值来控制的。如我的配置文件中 zend_optimizer.optimization_level = 1023 ,这里的1023是优化过程1到优化过程10全部数字代码(值)相 加得到的和,表示开启全部10个优化过程。刚才所提到的Zend公司定义的High模式值为15,15表示同时开启优化过程1-4。
加密代码支持 zend_optimizer.encoder_loader 详细解释
对 于这个参数,我想如果没有看过Zend Opt FAQ文档的朋友大多数并不知道。这个参数用来告诉ZendOptimizer是否去支持被 Zend Encoder加密过的代码。默认情况下ZendOpt将支持加密过的代码。如果不使用被加密过的代码我推荐你关闭此选项。这个功能牵扯到解包 反码的过程,会导致系统负荷的加重。
这个参数的值只有两个 0 关闭, 1 开启。默认为1,推荐设置为0。
模块定位 zend_extension_ts 无需解释
这是最简单的地方,参数就是Zend Optimizer模块在硬盘上的安装路径。
=================================================
PHP5.3下的安装Zend Optimizer
最近配置新版本的php环境,由于MYSQL和PHP版本都需要更新,服务器上是用的目前最新的php 5.3.6,然后去Zend下载的ZendOptimizer的最新版本3.3.3,显而易见安装后ZendOptimizer没加载
原因在于ZendOptimizer 3.3.3只支持php 5.2.x,如果php 5.3.x就需要用ZendGuardLoader 5.5这个产品,换句话说就是ZendOptimizer今后zend官方不更新了。
那 就装ZendGuardLoader,但是ZendGuardLoader 5.5只能解Zend Guard 5.5加密的代码,老版本的 Zend Guard加密的代码无能无力。如果你要用到zend的产品是用Zend Guard5.5以上的版本加密的,恭喜你直接装 ZendGuardLoader即可,但是如果你要用的那产品的开发商还没这么前卫的话,就继续往下读吧。
目前这个年代IIS 里用的PHP都是用fastcgi方式了,fastcgi给大家灌输的概念是要用非线程安全(nts)版本的PHP。如果 ZendOptimizer 3.3.3加php 5.2.x的nts版的话,又挂了,因为如果要用ZendOptimizer需要用线程安全的版本。
照 目前来说,符合条件的最新的就是php-5.2.17-Win32-VC6-x86,而它又分msi和zip两个。按照习惯用的msi,但装上后php后 页面上fastcgi报错(还未装zend就错),php目录下面放php.ini、windows目录下放php.ini、两个目录下都放 php.ini这3中情况都试了都同样的出错……
然后卸载了php的msi安装版,换上了zip版,php目录下面不放php.ini、 windows目录下放php.ini,phpinfo()终于出来了 “with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies”
随后另在一台服务器上IIS6+fastcgi的php 5.2.17线程安全zip版装ZendOptimizer同样成功。证明虽然不能说ZendOptimizer在php 5.2.x里只能如此安装,但至少如此安装绝对能配通。
关于ZendOptimize安装,上官方下载ZendGuardLoader-php-5.3-Windows
下载后将相应的ZendLoader.dll文件进行加放到php.ini上即可
详细方法见
Zend Guard Loader installation instructions
——————————————-
1. Extract the Zend Loader package.
2. Locate and extract the ZendGuardLoader.so (Linux) or ZendLoader.dll (Windows) that corresponds to your php version.
3. Add the following line to your php.ini file for loading the ZendGuardLoader:
Linux and Mac 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. The default value is On
zend_loader.enable=1
5. Optional: following lines can be added your php.ini file for ZendGuardLoader configuration:
; Disable license checks (for performance reasons)
zend_loader.disable_licensing=0
; The Obfuscation level supported by Zend Guard Loader. The levels are detailed in the official Zend Guard Documentation. 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 Zend Guard User Guide
zend_loader.license_path=
6. If you use Zend debugger as well, please make sure to load it after the Zend guard Loader
7. If you use ioncube loader, please make sure to load it before Zend guard Loader
8. Restart your Web server.
==================================================
windows版本
c. PHP5.3.0(注意:一定要下VC9 Non Thread Safe版本,可获得性能和可靠性双提升)
d. 针对IIS6的FastCGI组件(自从PHP5.3.0开始,由于一直以来PHP+ISAPI的稳定性有问题,在IIS平台上PHP取消了ISAPI模块的支持,只支持FastCGI运行方式,在IIS官方网站下载)
=========================================================
快速配置IIS 6.0 php fastcgi +Zend Optimizer、wincache、eAccelerator
首先下载php包 fastcgi模块
无须Zend Optimizer 请下载非线程安全版
http://windows.php.net/downloads/releases/archives/php-5.2.14-nts-Win32-VC6-x86.zip
需要Zend Optimizer 请下载线程安全版PHP
http://windows.php.net/downloads/releases/archives/php-5.2.14-Win32-VC6-x86.zip
fastcgi 模块下载 下载x86版
http://www.iis.net/download/fastcgi
或者
http://go.microsoft.com/?linkid=9707432
注:微软的说法是 fastcgi使用非线程安全版PHP执行效率会更高,也推荐的是非线程安全版。
但是很多商业程序是用zend加密了的,因此按照你的实际情况来下载php包。
把下载的PHP包解压缩 然后复制到C盘 重命名文件夹为PHP 给予iis_wpg读取权限即可
然后打开PHP文件夹 找到php.ini-dist 复制后从命名为php.ini 位置为c:\php
建立session文件 给予iis_wpg写权限。例如我的是C:\phptmp\session
打开php.ini 找到 session.save_path 去掉;修改为session文件夹路径
session.save_path = "C:\phptmp\session"
找到extension_dir 修改如下:
extension_dir = "C:\php\ext"
修改运行fastcgi模块参数
cgi.force_redirect = 0
cgi.fix_pathinfo= 1
fastcgi.impersonate = 1
打开PHP扩展模块,去掉;即可打开 例如
按照你的实际应用环境打开
;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_fdf.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_ifx.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_exif.dll
extension=php_mcrypt.dll
extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_msql.dll
;extension=php_mssql.dll
extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
PHP加密扩展库Mcrypt安装
在标准的PHP安装过程中并没有把Mrcypt安装上,但PHP的主目录下包含了 libmcrypt.dll和libmhash.dll文件 (libmhash.dll是Mhash扩展库,这里可以一起装上)。首先,将这两个文件复制到系统目录windows\system32下,然后在 PHP.ini文件中按Ctrl+F快捷键跳出查找框,并找到;extension=php-mcrypt.dll和; extension=php_mhash.dll这两个语句,接着将前面的“;”去掉;最后,保存并重启Apache服务器即可生效