windows环境下搭建PHP环境的几种常用方法

前言

https://windows.php.net/downloads/releases/archives/ 这边的下载链接里面可以看到有很多个版本,以5.3.29为例,可以找到以下版本:

1
2
3
4
5
8/28/2014  9:20 PM     40116224 php-5.3.29-nts-win32-VC9-x86.msi
8/15/2014 8:02 PM 17034827 php-5.3.29-nts-Win32-VC9-x86.zip
8/15/2014 8:02 PM 20869838 php-5.3.29-src.zip
8/28/2014 9:20 PM 40239104 php-5.3.29-win32-VC9-x86.msi
8/15/2014 8:02 PM 17182832 php-5.3.29-Win32-VC9-x86.zip

.msi是安装版,src.zip是源码包。我们都不使用,其他2个版本的区别是:

  • php-5.3.29-nts-Win32-VC9-x86.zip ,nts为Non Thread Safe非线程安全的版本
  • php-5.3.29-Win32-VC9-x86.zip,这个为线程安全的版本

同时PHP还有其他的版本,即x64的版本,但是x64版本是实验性质的,所以可以无视,直接使用x86版。至于Thead Safe(线程安全)/Non Thead Safe(非线程安全)的区别我也不清楚,但是FastCGI是单线程执行的,因而不需要线程安全版本,去掉线程安全的防护后可以提高执行效率;而ISAPI方式则是多线程模式,所以需要采用线程安全版本

另外,VC9是指Microsoft Visual C++ 9.0 32位是安装 Visual C++库的运行时组件,使用户能够在计算机上运行使用Visual C++开发的应用程序。必须安装了之后才能正常运行。可以在 微软常用运行库合集 下载版本进行安装。注意,由于我们选用的是x86的php,所以只能安装32位的vc包。

nginx+php方案

nginx安装

https://nginx.org/en/download.html 下载Stable version版本。下载好之后直接解压至D:\nginx目录下,用 管理员权限 打开cmd,切换到nginx解压目录下,输入命令 start nginx.exe 或者 nginx.exe ,回车后会出现一个黑色的弹窗一闪而过。直接访问http://localhost/,如果能正常访问,就表示nginx访问正常了。

常见nginx操作:

1
2
3
4
5
start nginx.exe       ## 启动服务
nginx.exe -s stop ## 快速停止服务
nginx.exe -s quit ## 优雅的 停止服务
nginx.exe -s reload ## 重新加载 配置文件,这命令可以不用停止nginx
nginx.exe -s reopen ## 重新打开日志文件

nginx配置服务

https://github.com/kohsuke/winsw/releases下载winSW,将 WinSW.NET4.exe 复制到 D:\nginx\ 目录中,并将名字修改为 nginxservice.exe ,新建一个空的 nginxservice.xml 文件(名字要与nginxservice.exe 名字前缀保持一致,但后缀是xml) ,其内容:

1
2
3
4
5
6
7
8
9
10
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx</description>
<logpath>D:\nginx\</logpath>
<logmode>roll</logmode>
<depend></depend>
<executable>D:\nginx\nginx.exe</executable>
<stopexecutable>D:\nginx\nginx.exe -s stop</stopexecutable>
</service>

这里有3处必须修改: <logpath><executable><stopexecutable>,然后用管理员权限打开cmd,运行nginxservice.exe install,然后运行net start nginx即可。

配置php

在php的目录下可以找到php.ini-development文件,复制一份并将文件名修改为php.ini。然后修改配置文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
short_open_tag=On
post_max_size=200M
disable_functions=exec,system,passthru,popen,pclose,shell_exec,proc_open,dl,chmod,escapeshellarg,escapeshellcmd,sh2_exec,proc_terminate,proc_close
extension_dir = "D:\php\ext"
cgi.force_redirect = 1
cgi.fix_pathinfo=1
upload_tmp_dir="D:\php\temp"
upload_max_filesize=200M

extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo_mysql.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pgsql.dll
extension=php_sqlite.dll
extension=php_memcache.dll

date.timezone=Asia/Shanghai
session.save_path="D:\php\temp"
[Zend.loader]
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
zend_extension="ext\ZendLoader.dll"

命令行下输入如下命令启动php,不报错表示启动成功。

1
D:/web/php>php-cgi.exe -b 127.0.0.1:9000 -c D:/web/php/php.ini

然后在nginx的配置文件server配置块中,加上以下规则:

1
2
3
4
5
6
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

D:/nginx/html下新建一个phpinfo.php,加入<?php phpinfo();?>内容后保存后,重启nginx之后,访问http://localhost/phpinfo.php能看到php信息表示安装成功。

配置php-cgi为服务

由于php-cgi.exe会自动退出,而xxfpm是php-cgi.exe进程管理工具,解决windows环境下php-cgi自动死掉问题,下载地址为https://github.com/78/xxfpm ,而winserv.exe是命令调用工具,可以让他符合注册为windows系统服务标准的程序,通过它来调用xxfpm。

1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off  
if not ""%1"" == ""INSTALL"" goto remove
"C:/nginx/php\winserv.exe" install "nginxPHP-CGI" -start auto "C:/nginx/php\php-cgi.exe" -b 127.0.0.1:9000 -c "C:/nginx/php\php.ini"
net start nginxPHP-CGI > NUL

goto end

:remove
net stop nginxPHP-CGI > NUL
"C:/nginx/php\winserv.exe" uninstall "nginxPHP-CGI"

:end
exit

直接copy上面代码,改名install.bat,执行即可。当然上面的目录路径要修改成你的。这步操作完,php-cgi.exe会随winserv.exe的启动而启动,但还没完,因为这时候的php-cgi.exe很脆弱,500个请求就会down掉。
在【运行】里输入regedit.exe,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\nginxPHP-CGI,即刚才注册的服务键值,把CommandLine的值修改为:C:\nginx\php\xxfpm.exe "C:/nginx/php/php-cgi.exe -c C:/nginx/php/php.ini" -n 5 -i 127.0.0.1 -p 9000,注意修改成自己的目录。上面的命令就是通过xxfpm.exe去管理php-cgi.exe进程,-n 5是打开5个进程,可以自行修改。

附上所有工具包、bat文件:百度网盘

注意,winserv.exe不能删除,所以此文件需要放置在常用路径。注册完服务之后,效果图如下:

脚本启动脚本方法

使用服务的方法,运行比较麻烦。并且运行的时间也比较久,基于此,可以直接使用cmd来运行,但是就运行在前台,有一个黑黑的运行框,我们可以使用 RunHiddenConsole.zip 使进程运行在后台,就清爽很多了。下载好工具之后,放置到nginx的安装目录下,将以下内容保存为start.bat:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
REM REM是bat文件的注释类似于php的//
REM 设置不输出命令
@ECHO off
REM 设置Nginx和php-cgi的目录
set php_home=E:/php
set nginx_home=E:/nginx


rem 重启PHP FastCGI
SET status=1
(TASKLIST|FIND /I "php-cgi.exe"||SET status=0) 2>nul 1>nul
IF %status% EQU 1 (
echo PHP FastCGI已经启动过了...
) ELSE (
%nginx_home%/RunHiddenConsole.exe %php_home%/php-cgi.exe -b 127.0.0.1:9000 -c %php_home%/php.ini
echo PHP FastCGI启动成功~
)

rem 重启nginx
echo,
SET status=1
(TASKLIST|FIND /I "nginx.exe"||SET status=0) 2>nul 1>nul
IF %status% EQU 1 (
echo Nginx已经启动过了...
) ELSE (
%nginx_home%/RunHiddenConsole.exe %nginx_home%/nginx.exe -p %nginx_home%
echo Nginx启动成功~
)

echo,
echo 按任意键退出界面(程序依然在运行)
pause>nul
exit

将以下内容保存为stop.bat:

1
2
3
4
5
6
7
8
@ECHO off
ECHO Stopping nginx...
REM 结束进程 /F 强制终止 /IM 指定的进程
TASKKILL /F /IM nginx.exe
ECHO Stopping PHP FastCGI...
TASKKILL /F /IM php-cgi.exe
REM 关闭窗口
EXIT

还有一个重启bat,可以参考Windows后台启动、停止和重启WNMP脚本

在windows环境下面配置多版本的PHP,其实就是下载多个php包,然后运行php-cgi.exe,然后绑定到不同的端口上面即可实现。

IIS + PHP 方案

此方案用得比较普遍。首先安装IIS组件,此步略。网上有很多方法的。

全手工方案

跟上述nginx+PHP包一样,下载php包,配置php.ini,此步请参考上面的文章。

打开IIS管理器,选择服务器节点

打开“处理程序映射”,

“添加模块映射”,

请求路径:*.php

模块:FastCgiModule

可执行文件(可选):d:\php\php-cgi.exe

名称:php-fastcgi

点“是”保存。

双击“FastCGI设置”,

选中路径,点击“编辑”,

点击“添加”,

Name:PHP_FCGI_MAX_REQUESTS

Value:10000

最后,“确定”即可。

通过phpManager配置

phpManager是微软发布的一个IIS 中管理php的配置工具,主要功能如下:关联PHP和IIS,并列运行多个PHP版本在同一台服务器上,甚至在同一网站等。其官网为https://www.phpmanager.xyz/,目前最新版本是2.3,在https://github.com/phpmanager/phpmanager/releases可以下载到。

我们先把php下载到机器上,然后只需要解压即可,不需要去修改Php.ini的配置。

再继续安装phpManager之前,必须安装.net 3.5,安装方法如下:

再双击安装phpManager即可。安装完后,会在IIS 中多出来一个图标,如图所示:

打开之后,如果没有配置PHP,会有一个黄色的警告。如下:

这时可以点击注册新 PHP 版本,按浏览按钮,选择php-cgi.exe文件即可:

只需要这一步,PHP Manager就帮我们生成了php.ini配置文件、在“处理程序映射”中自动添加了FastCgiModule模块的映射、“FastCgi设置“中也己生成,并且自动开启了几个常用模块。

web平台安装程序

https://www.microsoft.com/web/downloads/platform.aspx 或者 https://www.iis.net/downloads 处下载Web Platform Installer,下载好了之后,直接安装即可。安装完成之后 ,在IIS上面会出现web平台安装程序:

双击打开之后 ,搜索PHP即可。

由于此库在国外,下载比较慢,也有可以加载不了这个安装程序,所以在这个方法行通的时候,可以使用phpManager方法来配置,也是很快的,毕竟php.ini的配置都不需要去修改了。

第三方组件

第三方组件也有很多方法,直接集成了一键部署的功能。想省事的,可以直接下载拿来安装。

个人看法,在windows环境下面配置PHP,如果没有特殊需求,还是使用IIS+phpManger配置。

参考链接

在IIS上配置php服务器

Win+Nginx+IIS+xxfpm(服务版)+nginx代理到IIS的配置及工具

nginx windows安装、使用和配置开机启动

Windows下的Nginx安装与配置(PHP)

  • 本文作者: wumingx
  • 本文链接: https://www.wumingx.com/others/windows-config-php.html
  • 本文主题: windows环境下搭建PHP环境的几种常用方法
  • 版权声明: 本站所有文章除特别声明外,转载请注明出处!如有侵权,请联系我删除。
0%