版本相关概念说明:
-
ts/nts: thread safety 线程安全
TS refers to multithread capable builds.
NTS refers to single thread only builds.
Use case for TS binaries involves interaction with a multithreaded SAPI and PHP loaded as a module into a web server.
For NTS binaries the widespread use case is interaction with a web server through the FastCGI protocol, utilizing no multithreading (but also for example CLI). - VC6/VC9/VC11:
- Compiler MSVC6 (Visual C++ 6.0)
- Compiler MSVC9 (Visual C++ 2008)
- Compiler MSVC11 (Visual C++ 2012)
x86/x64: 机器64位和32位
原创文章,转载请注明: http://www.cnblogs.com/ganiks/
1. 区分好版本,兼容性就明了了
1.1 php常见版本
http://windows.php.net/download/
具体到小版本号:
PHP 5.3 (5.3.29) VC9 ts/nts x86/x64
PHP 5.4 (5.4.32) VC9 ts/nts x86/x64
PHP 5.5 (5.5.16) VC11 ts/nts x86/x64
PHP 5.6 (5.6.0) VC11 ts/nts x86/x64
1.2 Apache常见版本
- Version 2.4.10
- Version 2.2.29
- Version 2.0
1.3 mod_fcgid常见版本
http://httpd.apache.org/mod_fcgid/
- Version 2.3.6
- Version 2.3.9
你的mod_perl
处理你的CGI脚本是不是太累?
你是否想要在你服务器进程之外运行你的PHP程序?
那就快试试FastCGI
吧。
mod_fcgid
是Apache Http服务器的一个 FastCGI实现,将请求都指向它管理的FastCGI应用进程。
它是一个高性能的替代mod_cgi
或者mod_cgid
的不错的选择, 它启动了足够多的 CGI程序实例来处理当前的请求,并且这些实例还可以保持运行来面对即将到来的请求。
PHP开发者都喜欢它,比如,用它作为mod_php
in-process 的优先选择。
貌似apache版本中一般都集成了
mod_fcgid
1.4 memcache常见版本
http://windows.php.net/downloads/pecl/releases/memcache/3.0.8/
php_memcache-3.0.8-5.3-nts-vc9-x86.zip
php_memcache-3.0.8-5.3-ts-vc9-x86.zip
php_memcache-3.0.8-5.4-nts-vc9-x86.zip
php_memcache-3.0.8-5.4-ts-vc9-x86.zip
php_memcache-3.0.8-5.5-nts-vc11-x64.zip
php_memcache-3.0.8-5.5-nts-vc11-x86.zip
php_memcache-3.0.8-5.5-ts-vc11-x64.zip
php_memcache-3.0.8-5.5-ts-vc11-x86.zip
php_memcache-3.0.8-5.6-nts-vc11-x64.zip
php_memcache-3.0.8-5.6-nts-vc11-x86.zip
php_memcache-3.0.8-5.6-ts-vc11-x64.zip
php_memcache-3.0.8-5.6-ts-vc11-x86.zip
1.5 zend guard/optimizer常见版本
http://www.zend.com/en/products/guard/downloads#Windows
Zend Guard Loader (Runtime for PHP 5.4) 6.0.0
Zend Guard Loader (Runtime for PHP 5.3) 5.5.0
Zend Optimizer (Runtime for PHP 5.2 and earlier)
很明显,针对不同的PHP版本要用到不同的zend guard loader
版本或者用zend optimizer
注意区分
zend guard
和zend guard loader
的区别
2. 按次序安装:
- 安装Apache
[2.2.4-win32-x86-no_ssl]
,注意指定路径到 D:\localhost - 解压缩PHP
[5.3.29-ts-win32-VC9-x86]
- 安装Mysql
[5.5.39-win32]
,注意指定路径到 D:\localhost 并且要运行初始化向导配置用户名密码以及编码
d
3. 配置Apache+PHP:
3.1 配置Apache下的conf\httpd.conf
#LoadModule cgi_module modules/mod_cgi.so
LoadModule fcgid_module modules/mod_fcgid.so
#LoadModule php5_module
PHPIniDir "D:\localhost\php5.3ts"
LoadModule php5_module D:\localhost\php5.3ts\php5apache2_2.dll
AddType application/x-httpd-php .php .phtml
#Remove above lines after you unintall php
DocumentRoot "D:/localhost/www"
<Directory "D:/localhost/www">
... ...
... ...
</Directory>
3.2 配置php.ini
如果apache配置中指定了
PHPIniDir
,则直接可以配置php目录下的php.ini
否则, php5.3ts中的php.ini拷贝一份到C:\windows
下面,并配置:
extension_dir = "D:\localhost\php5.3ts\ext"
extension=php_bz2.dll
extension=php_curl.dll
;extension=php_fileinfo.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_exif.dll ; Must be after mbstring as it depends on it
extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.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
3.3 如果配置过程中报错,记得去看看 apache 目录下的 logs\errors
3.4 配置zend guard loader
解压缩 zend guard ZendLoader.dll
到目录 yourphpdir\ext
修改PHP配置:
[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"
zend guard loader只支持NTS的版本,意味着如果你的php版本是TS的话,就没法使用zend guard loader了,如果你想查看自己的php是ts还是nts的,只需要输出phpinfo,然后搜索下:Thread Safety,disabled对应nts版本,否则为ts。
因此,终极解决办法就是,下载个php NTS版本进行安装即可。