PHP版本中的VC6,VC9,VC11,TS,NTS区别

以windows为例,看看下载到得php zip的文件名

php-5.4.4-nts-Win32-VC9-x86.zip

VC6:legacy Visual Studio 6 compiler,是使用这个编译器编译的。
VC9:Visual Studio 2008 compiler,就是这个编译器编译的。

这个其实没有什么太大的影响,因为从php 5.3,已经没有vc6版本提供下载了

IIS

如果想使用IIS配置PHP的话,那么需要选择Non-Thread Safe(NTS)版本的PHP

Apache

如果你是用的Apache的版本来自Apache Lounge(website:http://apachelounge.com/),可以使用PHP VC11 x86或者x64版本。

如果你使用的是从apache.org下载的Apache1或者Apache2来搭建PHP环境的话,只能使用VC6版本,无法使用VC9+以上版本。

VC9 VC11

VC9和VC11是PHP的最新版本(这两个版本分别通过Visual Studio 2008和Visual Studio 2012编译),其中包含了对于性能和稳定性的改进。

VC9版本要求用户安装Microsoft Visual C++ 2008 SP1 Redistributable Package(x86 | x64

VC11版本要求用户安装Visual C++ Redistributable for Visual Studio 2012(x86 | x64

TS:Thread Safe 线程安全, 执行时会进行线程(Thread)安全检查
NTS:Non Thread Safe 非线程安全, 在执行时不进行线程(Thread)安全检查

我使用Apache+PHP的模式下,一般是把PHP作为一个Module load到apache中,那么以apache父进程-多子进程的工作模式,是需要进行线程安全检查的,所以如果是以这种方式执行php,选择ts版本

那么如果是使用fastcgi,比如说用php-fpm管理php执行,则不需要进行线程安全检查,则选择nts版本的php

---------------------------------------------------------------------------------------------------------------------------
php 5.5.0 beta 1发布后, 安装出现问题, 家中电脑升级是成功的, 可公司的电脑一直提示无法加载到服务. 操作系统都一样的, 没什么区别. www.php.net官网左侧的说明提醒了我.

php-5.5.0beta1-Win32-VC11-x86

安装包的名字也已经说明了, 要运行必须安装vc11, x86表示32位, 假如是x64就是64位, 位数对于安装vc11有帮助, 个人建议vc11 x86, x64两个版本都安装上比较好, 反正没冲突.

然后启动服务, 搞定. phpinfo信息如下:

-----------------------------------------------------------------------------------------------------------------------------

VC6:legacy Visual Studio 6 compiler,就是使用这个编译器编译的。
VC9:Visual Studio 2008 compiler,就是用微软的VS编辑器编译的。
由于apache.org只提供VC6的版本,所以使用原版apache时只能使用VC6。(www.apachelounge.com上有apache VC9的版本提供,应该可以和PHP VC9配合,没用过)
TS:Thread Safe 线程安全, 执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源
NTS:Non Thread Safe 非线程安全, 在执行时不进行线程(Thread)安全检查
PHP的两种执行方式:ISAPI和FastCGI。
ISAPI(Internet
Server Application Programming
Interface)执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这
样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本
apache中的配置方式:

#下面这个是加载TS版本的php必须的
LoadModule php5_module “xxx/php5apache2_2.dll”
#下面这行可有可无

AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt

FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择Non Thread Safe版本。
apache中的配置方式:

#下面这两行是加载NTS版本的php必须的,不可以直接写成Action application/x-httpd-php “c:/wamp/bin/php/php3.5.6/php-cgi.exe”!
ScriptAlias /php/ "C:/wamp/bin/php/php3.5.6/"
Action application/x-httpd-php “/php/php-cgi.exe”

#另外,还要有之前的AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt,这样才能认识php格式的文件

#这样配置完可能还会因为权限问题而无法用php-cgi.exe解析php网页,所以还要加上下面这段

<Directory "C:/wamp/bin/php/php5.3.6/">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
官方并不建议你将Non Thread Safe 应用于生产环境,所以我们选择Thread Safe 版本的PHP来使用。
XAMPP在http-xampp.conf中默认配置是使用ISAPI的方式

时间: 2024-08-07 03:04:35

PHP版本中的VC6,VC9,VC11,TS,NTS区别的相关文章

IE对象最后一个属性后不要加逗号,否则在IE7及以下版本中会报错

某函数返回一个对象,如果在最后一个属性后加逗号,IE7及以下版本中会报错 正确代码: return{ top:rect.top-top, bottom:rect.bottom-top, left:rect.left-left, right:rect.right-left } 错误代码(IE8以上都不会报错) return{ top:rect.top-top, bottom:rect.bottom-top, left:rect.left-left, right:rect.right-left, }

OpenGL2.0及以上版本中gl,glut,glew,glfw,mesa等部件的关系

OpenGL2.0及以上版本中gl,glut,glew,glfw,mesa等部件的关系 一.OpenGL OpenGL函数库相关的API有核心库(gl),实用库(glu),辅助库(aux).实用工具库(glut),窗口库(glx.agl.wgl)和扩展函数库等. gl是核心,glu是对gl的部分封装.glx.agl.wgl 是针对不同窗口系统的函数.glut是为跨平台的OpenGL程序的工具包,比aux功能强大(aux很大程度上已经被glut库取代.).扩展函数库是硬件厂商为实现硬件更新利用Op

debug、 release两个版本中正确运行的一些经验

在Qt编程中,默认的是debug版本,在编译器中可以正常的使用,但是单独运行.exe可执行文件时却发现系统提示缺少文件.其实就是缺少必要的.dll动态库文件.根据提示添加需要的.dll动态库文件即可.另外,这些动态库文件就在Qt的安装目录中,找到复制进去就行了. 并且,debug需要添加的动态库文件名字一般就是XXXd.dll文件,比如Qt5Cored.dll文件.但是在release版本中,需要添加的文件根debug版本中的是一样的,但是名字有一点区别.比如在debug版本中添加的是Qt5Co

关于python3.4版本中的zip函数

特别注意: 在window,显示变量 print(x);而在linux中 print x 例如,有两个列表: >>>a = [1,2,3] >>>b = [4,5,6] 使用zip()函数来可以把列表合并,并创建一个元组对的列表. >>>zip(a,b) [(1, 4), (2, 5), (3, 6)] #注意在Python3.4版本中,显示 >>> zip(a,b)<zip object at 0x01FB2E90> 如

[译] OpenStack Kilo 版本中 Neutron 的新变化

OpenStack Kilo 版本,OpenStack 这个开源项目的第11个版本,已经于2015年4月正式发布了.现在是个合适的时间来看看这个版本中Neutron到底发生了哪些变化了,以及引入了哪些新的关键功能. 1. 扩展 Neutron 开发社区 (Scaling the Neutron development community) 为了更好地扩展 Neutron 开发社区的规模,我们在Kilo开发周期中主要做了两项工作:解耦核心插件以及分离高级服务.这些变化不会直接影响 OpenStac

微软BI 之SSIS 系列 - 2008 版本中变量 Int64 无法保存 bigint 类型数据的BUG

开篇介绍 这是今天在帮别人看一个 2008R2 版本的项目时发现的一个 Bug,这个 Bug 在 SQL SERVER 2012 有的版本中可能已经解决,但在论坛上看到有的仍然存在. 在 SQL SERVER 2008 R2 版本中,比如从一个数据库表中取一个 BIGINT 类型的数据,赋值给一个 Int64 类型的变量,按照我们的理解肯定是正确的. 但是结果是报错了 - 错误原因:类型不一致造成的. [Execute SQL Task] Error: An error occurred whi

低版本中使用高版本出现的类怎么办?

原理概述 简单来说就是三个字——黑魔法. 利用这种黑魔法的例子已经越来越多,我所知道的最早使用这种方法的是一个老外在三年为了解决NSUUID而使用的. 我们国内团队开发的FDStackView是一个非常好的开源库,已经有1500+颗星星了,希望大家多多支持我们国内的团队,在FDStackView库中也用到了相同的技术,网上有人发出了分析实现原理的文章,但分析的很浅,而且根本没有说在点子上,使得这种黑魔法的魅力并没有被大家欣赏到,我这里做了一些功课,把这个原理详细的阐述一下,以及这里的关键点在哪里

在低于android 5.0的版本中ActionBar不显示

我从ABS切换到AppCompat与Material theme(仅适用于API21) 我的配置文件如下: <application android:theme="@style/AppStyle" <-- values folder --> <style name="AppStyle" parent="@style/AudioRecTheme"> <style name="AudioRecTheme&

在VS2012后的版本中做数据报表时,提示尚未指定报表“Report1”的报表定义

有一群的朋友在用VS2012做数据报表时,老是提示 本地报表处理期间出错. 尚未指定报表“Report1”的报表定义 未将对象引用设置到对象的实例. 我看了一下,步骤没错,我用VS2010做了一下,一切OK,没问题,但用VS2013做时, 就提示这错误 后仔细看了一下设计生成的源码,嘿,还真有区别,在VS2012与VS2013中, ReportViewer生成的代码在引用报表数据时,使用的是ReportEmbeddedResource属性 <LocalReport ReportEmbeddedR