Apache is running a threaded MPM, but your PHP module is not compiled to be threadsafe. you need to

手动配置想要组合版本的wamp环境时,在服务器上直接下载的几个安装包怎么都组合安装不成功,纠结好久,终于找到缘由。配置apache支持php后apache一直没法成功启动。后来发现php是nts的版本。apache服务器须要安装ts的php版本,不知道服务器上是怎么成功运行的,难道php项目实际用的iis?php

 

解药以下:mysql

【详细错误】:Apache is running a threaded MPM, but your PHP module is not compiled to be threadsafe. you need to recompile php. pre-configuration failed.

【形成缘由】:服务管理器由IIS更换至Apache,原php版本是无线程安全(nts)的,所以须要将php同时更换为线程安全版本(ts).

【处理办法】:

1.  下载新的php5.2.17 VC6 x86 Thread Safe,更新原php程序.

2. 打开php.ini文件:(添加或打开)

extension_dir = "PHP安装目录\ext"

default_charset = "gbk" 

extension=php_mysql.dll

3.把php5ts.dll复制到c:\windows\system32下.

下面再配置一下Apache的conf文件:

1. 打开apache目录下/conf/httpd.conf文件.

2. 编辑添加新的记录:

LoadModule php5_module "php安装目录/php5apache2_2.dll"
PHPIniDir "php安装目录/php.ini"
AddType application/x-httpd-php .php

3. 再次启动apache,ok启动成功~

 

下面是ts与nts的相关解释web

1 在php官网下载php时,咱们会发现有vc六、vc9的区别,这是什么意思呢? VC6是legacy Visual Studio 6 compiler,使用这个版本的编译器编译PHP代码的,使用apache作应用程序服务器,则选择vc6。 VC9是the Visual Studio 2008 compiler,就是用微软的VS编辑器编译的。使用IIS作应用程序服务器,则选择vc9。 那么,咱们注意到,php-5.2.17-nts-Win32-VC6-x86.zip php的解压文件中,有nts和没有nts的区别,这个又是什么意思呢? 这要从php的5.2系列版本提及。从5.2.1版本开始,就有ts和nts的区别,Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全) 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模式创建在多进程的基础之上,而不是多线程。咱们在windows上会把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,非线程安全)的版本可以更好的提升效率。 根据不一样的webserver,也就是应用程序服务器,在处理应用请求的时候,有些是用多线程而非多进程的方式,那么因为线程会牵扯到共享寄存器和内存方面的,因此很容易出错(考虑c语言指针的状况),那么系统就须要时间和资源来处理寄存器中的数据,保证它们的一致性,也就是保证线程安全了。 因此是否使用Thread Safe(线程安全),主要看web server所采用的PHP请求处理方式,若是是多线程处理如IIS的ISAPI方式,那么请选择线程安全,若是是FastCGI那么选择非线程安全。 最终建议:IIS下,使用ISAPI方式运行PHP,就使用Thread Safe(线程安全)的版本,使用FastCGI方式运行PHP,就使用None Thread Safe(NTS,非线程安全)的版本。 注:php5.2没有vc9,php5.3、php5.4没有vc6。呵呵。PHP5.5开始,不支持xp和win2003了,更是vc11了。
View Code
相关文章
相关标签/搜索