- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章windows平台中配置nginx+php环境由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
刚看到nginx这个词,我很好奇它的读法(engine x),我的直译是"引擎x",一般引"擎代"表了性能,而"x"大多出现是表示"xtras(额外的效果)",那么整个词的意思就是类似"极致效果","额外性能"。当然这里不是要来唠嗑,以上是题外话.
nginx相较于我们熟悉的apache,IIS的优势,就我浅入浅出的了解,在于"反向代理"和"负载均衡"。因此考虑到能够为Web服务器节省资源,它可以代替apache来提供Web服务。那么上正题了,nginx有这么多优势,那在windows下如何来配置nginx+php环境?网上看到还是那么多转载来转载去的文章。这里就我配置的过程,来介绍一下:
1、首先需要准备的应用程序包.
nginx:nginx/Windows-1.0.4 php:php-5.2.16-nts-Win32-VC6-x86.zip RunHiddenConsole:RunHiddenConsole.zip nginx下php是以FastCGI的方式运行,所以我们下载非线程安全也就是nts的php包.
2、安装与配置.
1)php的安装与配置。 直接解压下载好的php包,到D盘wnmp目录(D:\wnmp),这里把解压出来的文件夹重命名成php5。进入文件夹修改php.ini-recommended文件为php.ini,并用Editplus或者Notepad++打开来。找到 。
1
|
|
extension_dir =
"./ext"
|
更改为 。
1
|
|
extension_dir = "D:/wnmp/php5/ext"
|
往下看,再找到 。
1
|
|
;extension=php_mysql.dll;extension=php_mysqli.dll
|
实际中,可能还要开启 。
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_msql.dll
extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_snmp.dll
extension=php_sockets.dll
extension=php_sqlite.dll
extension=php_xsl.dll
extension=php_zip.dll
|
前面指定了php的ext路径后,只要把需要的扩展包前面所对应的“;”去掉,就可以了。这里打开php_mysql.dll和php_mysqli.dll,让php支持mysql.
当然不要忘掉很重要的一步就是,把php5目录下的libmysql.dll文件复制到C:\Windows目录下,也可以在系统变量里面指定路径,当然这里我选择了更为方便的方法^_^。(测试发现不复制也是可以的) 。
到这里,php已经可以支持mysql了.
接下来我们来配置php,让php能够与nginx结合。找到 。
1
|
|
;cgi.fix_pathinfo=1
|
我们去掉这里的分号:
1
|
|
cgi.fix_pathinfo=1
|
这一步非常重要,这里是php的CGI的设置.
2)nginx的安装与配置 。
把下载好的nginx-1.0.4的包同样解压到D盘的wnmp目录下,并重命名为nginx。接下来,我们来配置nginx,让它能够和php协同工作。进入nginx的conf目录,打开nginx的配置文件nginx.conf,找到 。
1
|
2
3
4
|
location / {
root html; #这里是站点的根目录 index index.html
index.htm;
}
|
将root html;改为root D:/wnmp/www;加上index.php,即:
1
|
2
3
4
|
location / {
root D:/wnmp/www; #这里是站点的根目录
index index.php index.html index.htm;
}
|
这里需要注意,路径分隔符请使用/而不要使用Windows中的\以防歧义。 再往下,找到 。
1
|
2
3
4
5
6
7
8
9
|
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
|
先将前面的#去掉,同样将root html;改为root D:/wnmp/www;。再把标记为红色的/scripts改为$document_root,这里的$document_root就是指前面root所指的站点路径,这是改完后的:
1
|
2
3
4
5
6
7
8
9
|
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root D:/wnmp/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
|
设定error.log的存放目录,将#error_log logs/error.log;的#去处,默认error.log是存放在Nginx安装目录中logs目录下.
保存配置文件,就可以了.
nginx+php的环境就初步配置好了,来跑跑看。我们可以输入命令:
1
|
|
php-cgi.exe -b 127.0.0.1:9000 -c D:
/wnmp/www/php/php
.ini
|
来启动php,并手动启动nginx(可能不可行)。当然也可以利用脚本来实现.
首先把下载好的RunHiddenConsole.zip包解压到nginx目录内,RunHiddenConsole.exe的作用是在执行完命令行脚本后可以自动关闭脚本,而从脚本中开启的进程不被关闭。然后来创建脚本,命名为start_nginx.bat,我们在Notepad++里来编辑它:
1
|
2
3
4
5
6
7
8
9
10
11
12
|
@
echo
off
REM Windows 下无效
REM
set
PHP_FCGI_CHILDREN=5
REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
set
PHP_FCGI_MAX_REQUESTS=1000
echo
Starting PHP FastCGI...
RunHiddenConsole D:
/phpsetup/php-5
.4.45-nts-Win32-VC9-x86
/php-cgi
.exe -b 127.0.0.1:9000 -c D:
/phpsetup/php-5
.4.45-nts-Win32-VC9-x86
/php
.ini
echo
Starting nginx...
RunHiddenConsole D:
/phpsetup/nginx-1
.6.0
/nginx
.exe -p D:
/phpsetup/nginx-1
.6.0
|
再另外创建一个名为stop_nginx.bat的脚本用来关闭nginx:
1
|
2
3
4
5
6
|
@
echo
off
echo
Stopping nginx...
taskkill
/F
/IM
nginx.exe > nul
echo
Stopping PHP FastCGI...
taskkill
/F
/IM
php-cgi.exe > nul
exit
|
这样,我们的服务脚本也都创建完毕了。双击start_nginx.bat,再看看进程管理器是不是有两个nginx.exe的进程和一个php-cgi.exe的进程呢?
这样nginx服务就启动了,而且php也以fastCGI的方式运行了。 到站点目录下,新建一个phpinfo.php的文件,在里面编辑 。
1
|
2
3
|
<?php
phpinfo();
?>
|
保存后,打开浏览器输入http://localhost/phpinfo.php,如果看到 。
就说明,nginx+php的环境已经配置好了,呵呵~ 。
Nginx 403 forbidden的解决办法 。
常见的,引起nginx 403 forbidden有二种原因,一是缺少索引文件,二权限问题.
1、缺少index.html或者index.php文件 。
代码如下
1
|
2
3
4
5
6
|
server {
listen 80;
server_name localhost;
index index.php index.html;
root /var/www;
}
|
如果在/var/www下面没有index.php,index.html的时候,直接访问域名,找不到文件,会报403 forbidden。 例如:你访问www.test.com而这个域名,对应的root指定的索引文件不存在.
权限问题 。
对于PHP而言,如果nginx用户没有web目录的权限,则会导致该错误。 解决办法:修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重起一下就能解决。 如: 代码如下(Linux下)
1
|
|
chown
-R nginx_user:nginx_user
/htdocs
|
。
最后此篇关于windows平台中配置nginx+php环境的文章就讲到这里了,如果你想了解更多关于windows平台中配置nginx+php环境的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我需要将文本放在 中在一个 Div 中,在另一个 Div 中,在另一个 Div 中。所以这是它的样子: #document Change PIN
奇怪的事情发生了。 我有一个基本的 html 代码。 html,头部, body 。(因为我收到了一些反对票,这里是完整的代码) 这是我的CSS: html { backgroun
我正在尝试将 Assets 中的一组图像加载到 UICollectionview 中存在的 ImageView 中,但每当我运行应用程序时它都会显示错误。而且也没有显示图像。 我在ViewDidLoa
我需要根据带参数的 perl 脚本的输出更改一些环境变量。在 tcsh 中,我可以使用别名命令来评估 perl 脚本的输出。 tcsh: alias setsdk 'eval `/localhome/
我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!”来自右上方的以下 Ra
这是我的方法 void login(Event event);我想知道 Kotlin 中应该如何 最佳答案 在 Kotlin 中通配符运算符是 * 。它指示编译器它是未知的,但一旦知道,就不会有其他类
看下面的代码 for story in book if story.title.length < 140 - var story
我正在尝试用 C 语言学习字符串处理。我写了一个程序,它存储了一些音乐轨道,并帮助用户检查他/她想到的歌曲是否存在于存储的轨道中。这是通过要求用户输入一串字符来完成的。然后程序使用 strstr()
我正在学习 sscanf 并遇到如下格式字符串: sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c); 我理解 %[^:] 部分意味着扫描直到遇到 ':' 并将其分配给 a。:
def char_check(x,y): if (str(x) in y or x.find(y) > -1) or (str(y) in x or y.find(x) > -1):
我有一种情况,我想将文本文件中的现有行包含到一个新 block 中。 line 1 line 2 line in block line 3 line 4 应该变成 line 1 line 2 line
我有一个新项目,我正在尝试设置 Django 调试工具栏。首先,我尝试了快速设置,它只涉及将 'debug_toolbar' 添加到我的已安装应用程序列表中。有了这个,当我转到我的根 URL 时,调试
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,它将使用固定的 a=a1 和 c=c1 调用 f: g = @(b) f(a1, b,
我不明白为什么 ForEach 中的元素之间有多余的垂直间距在 VStack 里面在 ScrollView 里面使用 GeometryReader 时渲染自定义水平分隔线。 Scrol
我想知道,是否有关于何时使用 session 和 cookie 的指南或最佳实践? 什么应该和什么不应该存储在其中?谢谢! 最佳答案 这些文档很好地了解了 session cookie 的安全问题以及
我在 scipy/numpy 中有一个 Nx3 矩阵,我想用它制作一个 3 维条形图,其中 X 轴和 Y 轴由矩阵的第一列和第二列的值、高度确定每个条形的 是矩阵中的第三列,条形的数量由 N 确定。
假设我用两种不同的方式初始化信号量 sem_init(&randomsem,0,1) sem_init(&randomsem,0,0) 现在, sem_wait(&randomsem) 在这两种情况下
我怀疑该值如何存储在“WORD”中,因为 PStr 包含实际输出。? 既然Pstr中存储的是小写到大写的字母,那么在printf中如何将其给出为“WORD”。有人可以吗?解释一下? #include
我有一个 3x3 数组: var my_array = [[0,1,2], [3,4,5], [6,7,8]]; 并想获得它的第一个 2
我意识到您可以使用如下方式轻松检查焦点: var hasFocus = true; $(window).blur(function(){ hasFocus = false; }); $(win
我是一名优秀的程序员,十分优秀!