概述
前言1
2
3
4
58/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
5start 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
nginx
nginx
nginx
D:nginx
roll
D:nginxnginx.exe
D:nginxnginx.exe -s stop
这里有3处必须修改: 、 、 ,然后用管理员权限打开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
32short_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:phpext"
cgi.force_redirect = 1
cgi.fix_pathinfo=1
upload_tmp_dir="D:phptemp"
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:phptemp"
[Zend.loader]
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
zend_extension="extZendLoader.dll"
命令行下输入如下命令启动php,不报错表示启动成功。
1D:/web/php>php-cgi.exe -b 127.0.0.1:9000 -c D:/web/php/php.ini
然后在nginx的配置文件server配置块中,加上以下规则:
1
2
3
4
5
6location ~ .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/phpwinserv.exe" install "nginxPHP-CGI" -start auto "C:/nginx/phpphp-cgi.exe" -b 127.0.0.1:9000 -c "C:/nginx/phpphp.ini"
net start nginxPHP-CGI > NUL
goto end
:remove
net stop nginxPHP-CGI > NUL
"C:/nginx/phpwinserv.exe" uninstall "nginxPHP-CGI"
:end
exit
直接copy上面代码,改名install.bat,执行即可。当然上面的目录路径要修改成你的。这步操作完,php-cgi.exe会随winserv.exe的启动而启动,但还没完,因为这时候的php-cgi.exe很脆弱,500个请求就会down掉。
在【运行】里输入regedit.exe,找到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesnginxPHP-CGI,即刚才注册的服务键值,把CommandLine的值修改为:C:nginxphpxxfpm.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
33REM 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
在windows环境下面配置多版本的PHP,其实就是下载多个php包,然后运行php-cgi.exe,然后绑定到不同的端口上面即可实现。
IIS + PHP 方案
此方案用得比较普遍。首先安装IIS组件,此步略。网上有很多方法的。
全手工方案
跟上述nginx+PHP包一样,下载php包,配置php.ini,此步请参考上面的文章。
打开IIS管理器,选择服务器节点
打开“处理程序映射”,
“添加模块映射”,
请求路径:*.php
模块:FastCgiModule
可执行文件(可选):d:phpphp-cgi.exe
名称:php-fastcgi
点“是”保存。
双击“FastCGI设置”,
选中路径,点击“编辑”,
点击“添加”,
Name:PHP_FCGI_MAX_REQUESTS
Value:10000
最后,“确定”即可。
通过phpManager配置
我们先把php下载到机器上,然后只需要解压即可,不需要去修改Php.ini的配置。
再继续安装phpManager之前,必须安装.net 3.5,安装方法如下:
再双击安装phpManager即可。安装完后,会在IIS 中多出来一个图标,如图所示:
打开之后,如果没有配置PHP,会有一个黄色的警告。如下:
这时可以点击注册新 PHP 版本,按浏览按钮,选择php-cgi.exe文件即可:
只需要这一步,PHP Manager就帮我们生成了php.ini配置文件、在“处理程序映射”中自动添加了FastCgiModule模块的映射、“FastCgi设置“中也己生成,并且自动开启了几个常用模块。
web平台安装程序
双击打开之后 ,搜索PHP即可。
由于此库在国外,下载比较慢,也有可以加载不了这个安装程序,所以在这个方法行通的时候,可以使用phpManager方法来配置,也是很快的,毕竟php.ini的配置都不需要去修改了。
第三方组件
第三方组件也有很多方法,直接集成了一键部署的功能。想省事的,可以直接下载拿来安装。
个人看法,在windows环境下面配置PHP,如果没有特殊需求,还是使用IIS+phpManger配置。
参考链接
最后
以上就是听话萝莉为你收集整理的php环境有哪些方法,windows环境下搭建PHP环境的几种常用方法的全部内容,希望文章能够帮你解决php环境有哪些方法,windows环境下搭建PHP环境的几种常用方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复