windows下 php由5.2升级 5.4.20的蛋疼过程。。
在IDC 工作大半年了,还没有毕业,刚刚答辩完毕,感觉有蛋疼了,每天面对客户奇葩问题,面对奇葩客户【PS:不是装逼的-.-,只是发现小白客户真可怕】,现在每天处理一些琐碎的事情,感觉人生的经验槽正在慢慢积蓄能量了,不禁一种舒爽的感觉啊~,IDC的大家应该了解点,小问题不会的问百度,问我哥(谷歌),大问题备份数据重装一下下~反正有模板。
今天遇到一个问题就是客户模板程序要用到 php 5.4版本以上的,客户用的独立服务器,PHP升级速来麻烦的蛋疼【当然这是我以为的,新手小问题自己也不免兴师动众的样子..】,5.2版本的PHP 算是老版本了吧,但是我们这边的IDC很多默认都是安装的这个,然后就要进行各种操作。
这边我就列一下今天进行的步骤,已记录此次操作过程,也为以后查看提供点便捷。。。
1.Php5.4.20
2.Microsoft Visual C++ 2008
3.FastCGI 1.5
安装流程
先解压php-5.4.20-Win32-VC9-x86.zip 或者 php-5.4.20-nts-Win32-VC9-x86 【解压到C根目录下php目录下】
安装vcredist_x86.exe
在安装fcgisetup_1.5_rtw_x86_XiaZaiBa.zip
为什么是有两个呢? 他的不同点就是多了 nts 这三个字母,会导致的结果也很不通。
Non Thread Safe就是非线程安全;
Thread Safe 是线程安全;
官方并不建议你将Non Thread Safe 应用于生产环境,但是不使用的话有时会出现一些蛋疼的问题。。。
1.然后需要配置PHP
首先将php目录中的php.ini-development或php.ini-production
php.ini-development 适合开发程式使用(测试用)
php.ini-production 拥有较高的安全性设定,则适合上线当产品使用
打开php.ini修改以下内容
1、找到; extension_dir = ”./”这行,修改为extension_dir = ” D:\php\php5\ext” (注意去掉前面的“;“)
2、;date.timezone = 修改为date.timezone =”asia/shanghai” (注意去掉前面的“;“引号为英文引号)
3、short_open_tag 设置为On(注意去掉前面的“;“引号为英文引号)
4、extension=php_mbstring.dll(宽字符支持,推荐选中 去掉前面的“;“)
5、extension=php_gd2.dll(PHP的GD库支持,必选 去掉前面的“;“)
6、extension=php_mysqli.dll(去掉前面的“;“)
7、extension=php_mysql.dll(使PHP支持MySQL,必选去掉前面的“;“)
然后保存退出
2.修改fcgiext.ini 文件
打开C:\WINDOWS\system32\inetsrv\fcgiext.ini
在最后添加以下内容
[Types]
php=PHP
[PHP]
ExePath=D:\php\php5\php-cgi.exe // (这里的路径是你的php解压后的路径)
保存退出
3.打开Internet 信息服务(IIS)管理器
点击确认,重启IIS 然后就可以用探针测试了。。
探针写法应该都会,这边也提供一下。
<?php
phpinfo():
?>
然后就能测试了。
假如说这么顺利的话,也不用写这篇文章了,这是后探针打开应该是正常的,如果是模板程序的话也可以进行安装,但是打开页面会提示
会提示要zend,提示要加载zend,但是我记得5.4的不要zend的啊,然后就搜索,发现是需要Zend Guard Loader 这个组件,需要去官网下载http://www.zend.com/en/products/guard/downloads?platform=Windows,他是一个只有0.06M的东西,是目前市面上最成熟的PHP源码加密产品。
然后下载下来继续进行配置
下载好后解压压缩包,找到目录下的 ZendLoader.dll 文件,将它放到你的php目录下ext下,再编辑php.ini文 件,添加一段代码(如):
[Zend.loader]
zend_loader.enable=1
zend_loader.disable_licensing=1
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
zend_extension="你的PHP安装目录\ext\ZendLoader.dll"
做完这些,默默地重启IIS 然后在测试,打开还是不行仍然提示错误,错误类型仍然如此。
继续查看网上同样问题的朋友们,发现zend loader 他只能用于 非线程安全 的PHP版本中,也就是说PHP 要重装,而且要装带有 nts的字段的 php 包,什么情况下可以判断呢,在探针中出现
PHP Extension 20090626
Zend Extension 220090626
Zend Extension Build API220090626,TS,VC9
再找一下 Thread Safety 选项,如果对应是 enable 就是 ts的 是disenable 就是 nts的,然后在返工重做吧.....
http://pan.baidu.com/s/1hqggfaO 这里提供一下我的软件包 , 希望对同蛋疼的朋友有帮助。
本文出自 “LN__@linux” 博客,请务必保留此出处http://6839976.blog.51cto.com/6829976/1410553