几点说明
1.PHP自5.3版起默认不在支持针对Windows的VC6编译版本,只提供VC9版本的,而APAche官方提供的Apache Windows编译包都是VC6的。所以我们需要使用第三方编译的VC9版本的Apache。
2.PHP 的 None Thread Safe 版本适用于CGI/FastCGI方式,而相应的Thread Safe版本适用于SAPI和Mod方式
3. http://www.apachelounge.com/download/ 这里提供了大量适用于Windows的LAMP有关预编译包,包括VC9版本的Apache和FastCGI,这个网站也是PHP官方推荐的网站。
版本选择及安装包获取
Apache 2.2 VC9 来源: http://www.apachelounge.com/download/
mod_fcgid-2.3.6-win32-x86 http://www.apachelounge.com/download/
PHP 5.3.6 nts vc9 来源:php.com
VC 2008 RunTime vcredist_x86 来源:php.com
XCache-1.3.0-php-5.3.0-nts-Win32-VC9-x86.zip 来源:http://xcache.lighttpd.net/pub/Releases/
总体安装过程
- 下载准备好有关安装包,解压apache,php到规划好的目录,比如:d:\server\
- 按照说明分别把 mod_fcgid.so 和php_xcache.dll 解压到相应的目录
- 安装 VC 2008 RunTime vcredist_x86
- 建立配置文件目录,比如 d:\server\confs
- 分别编辑/建立有关的配置文件,有关配置文件详见下面实例,(配置文件中涉及的路径及具体配置请根据实际情况修改)
- 使用 httpd -k install -n “service name” 方式手动安装服务
基本目录结构
d:\server \apache \php5 \confs \apache \php5 \logs \wwwroot
配置文件示例
Aapche默认配置文件修改( d:\server\apache\conf\httpd.conf)
#修改 Serverroot #修改 documentroot #在文件末尾增加自动搜索配置文件的路径 include "D:/server/confs/apache/*.conf"
php-fcgid.conf (d:\server\confs\apache\)
#加载 mod_fcgid LoadModule fcgid_module modules/mod_fcgid.so <IfModule mod_fcgid.c> AddHandler fcgid-script .fcgi .php #php.ini的存放目录 FcgidInitialEnv PHPRC "d:/server/confs/php5/" # 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程在处理完所有请求前退出 FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 500 #php-cgi每个进程的最大请求数 FcgidMaxRequestsPerProcess 500 #php-cgi最大的进程数 FcgidMaxProcesses 5 #最大执行时间 FcgidIOTimeout 120 FcgidIdleTimeout 120 #php-cgi的路径 FcgidWrapper "D:/server/php-5.3.6-nts/php-cgi.exe" .php AddType application/x-httpd-php .php </IfModule> #这里是关于prefork的配置,此配置未经验证,而且似乎上面提到apache安装包不是使用prefork模式的 #这段配置放到这里仅仅是留在备用参考,可以不使用 <IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 ServerLimit 1024 MaxClients 768 MaxRequestsPerChild 0 </IfModule>
vh.conf(d:\server\confs\apache\)
#加载一些mod LoadModule rewrite_module modules/mod_rewrite.so #定义有关目录、端口、虚拟主机配置 Listen 10.5.183.132:80 NameVirtualHost 10.5.183.132:80 <Directory "D:/wwwroot"> Options ExecCGI FollowSymLinks ExecCGI #必须有ExecCGI,才能运行PHP AllowOverride All Order allow,deny Allow from all DirectoryIndex index.html index.php </Directory> <VirtualHost 10.5.183.132:80> DocumentRoot "D:/wwwroot/www.test.local" ServerName www.test.local </VirtualHost>
php.ini (d:/server/confs/php5)
[Custom] ;*************************************************** ; Custom Config 这段配置可以直接附加到默认的PHP.ini文件末尾 ;*************************************************** date.timezone = "Asia/Shanghai" pdo_mysql.default_socket= cgi.force_redirect = 0 cgi.fix_pathinfo = 1 fastcgi.impersonate = 1; ;session.save_handler = files ;session.save_path = /tmp session.use_cookies = 1 ;session.use_only_cookies = 1 ; file_uploads = On ; upload_tmp_dir = ; upload_max_filesize = 2M ; post_max_size = 8M ; memory_limit = 8M ; max_execution_time = 30 ; max_input_time = 60 display_errors = on ; error_reporting = E_ALL log_errors = off error_log = d:\server\confs\logs\php-error.log ; mysql.connect_timeout = 1 ; doc_root = d:\wwwroot ;; 加载Ext extension_dir = "D:\server\php-5.3.6-nts\ext" extension = php_mysql.dll extension = php_mysqli.dll ;extension = php_pdo.dll extension = php_pdo_mysql.dll extension = php_mbstring.dll extension = php_mcrypt.dll extension = php_gd2.dll extension = php_bz2.dll extension = php_curl.dll [xcache] ;; Xcache 配置 ;; 安装成 zend extension (推荐), 路径一般是 "$extension_dir/xcache.so" ;; zend_extension = /usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.so ;; Windows 系统例子: ;zend_extension_ts = d:/Servers/Php5.3/ext/php_xcacshedd.dll ;; 或者您也可把 XCache 安装成 extension, 注意确保您的 extension_dir 设置正确, 并把 xcache.so 或者 php_xcache.dll 放到该目录里面 ; extension = xcache.so ;; 或者 Win32 系统: extension = "d:/server/php-5.3.6-nts/ext/php_xcache.dll" xcache.admin.enable_auth = On xcache.admin.user = "admin" ; xcache.admin.pass = md5($您的密码) xcache.admin.pass = "******" ; 这里的多数选项仅在 ini 里可以修改, 这里列出的都是默认值, 除非另外说明 ; select low level shm/allocator scheme implemenation xcache.shm_scheme = "mmap" ; 禁用: xcache.size=0 ; 启用: xcache.size=64M 之类 (任意>0的值) 同时请注意您的系统 mmap 上限 xcache.size = 64M ; 建议设置为 cpu 数 (cat /proc/cpuinfo |grep -c processor) xcache.count = 1 ; 只是个参考值, 您可以放心地存储多于此数量的项目(php脚本/变量) xcache.slots = 8K ; 缓存项目的 ttl, 0=永久 xcache.ttl = 0 ; 扫描过期项目的时间间隔, 0=不扫描, 其他值以秒为单位 xcache.gc_interval = 0 ; 同上, 只是针对变量缓存设置 xcache.var_size = 8M xcache.var_count = 1 xcache.var_slots = 8K ; 默认, 允许 ini_set() xcache.var_ttl = 0 ; 最大ttl值 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 ; 仅测试用 xcache.test = Off ; /dev/zero 时无效 xcache.readonly_protection = Off ; 对于 *nix 系统, xcache.mmap_path 是文件路径而不是目录, (可以不存在 但是必须能创建). ; 如果您期望启用 ReadonlyProtection, 可以使用类似 "/tmp/xcache" ; 2 个 php 组不会共享同一个 /tmp/xcache ; 对于 Win32 系统, xcache.mmap_path=匿名MAP名字, 不是文件路径. 建议使用 XCache 字眼避免跟其他软件冲突 xcache.mmap_path = "/tmp/xcache" ; 仅用于 *nix 系统 ; 设置为空(禁用) 或者类似 "/tmp/phpcore/" ; 注意该目录应该能被 php 写入文件 (跟 open_basedir 无关) xcache.coredump_directory = "" xcache.cacher = On xcache.stat = On xcache.optimizer = Off ; 如果 xcache.coveragedump_directory 设置为空则本设置自动为 Off xcache.coverager = Off ; 请确保本目录能被 coverage viewer 脚本读取 (注意 open_basedir) ; 依赖于 xcache.coverager=On xcache.coveragedump_directory = "" [Xdebug] ;Xdebug 配置 ,暂时还没测试Xdebug和Xcache的兼容性,这段配置放在这里仅仅是备用 ;zend_extension_ts = "D:\server\php5\ext\php_xdebug-2.0.5-5.3-vc6.dll" ;zend_extension = "D:\server\php5\ext\php_xdebug-2.0.5-5.3-vc6-nts.dll" xdebug.auto_trace = off ;开启自动跟踪 xdebug.remote_autostart = off ;开启远程调试自动启动 xdebug.remote_enable = 1 xdebug.remote_host = pc-dev.ysh.local xdebug.remote_port = 9000 ;xdebug.remote_handler = “dbgp” xdebug.show_exception_trace = off ;开启异常跟踪 xdebug.collect_vars = On ;收集变量 xdebug.collect_return = On ;收集返回值 xdebug.collect_params = On ;收集参数
我都用iis配置下的用法。。感觉只能用来测试吧。