PHP环境搭建

合集下载

php运行环境配置说明书

php运行环境配置说明书

环境软件版本介绍:APACHE 2.0.59PHP5.2.3MYSQL5.0.45GD-2.0.35Zend Optimizer v3.3.0说明:以下环境安装是根据网域高科建站系统在WINDOW2003服务器上的运的要求来配置的,为保证顺利安装完成,请务必对照文档中的说明和示意图来操作注意:安装前,先检查服务器上是否已装有相同软件,以免服务冲突!在配置服务器的同时把IIS先服务装上。

本程序需要php+mysql+zend optimizer环境运行,运行环境安装包下载地址:/dow/phpmysqlzend.rar第一部分环境配置1: PHP 5.2.3的安装配置步骤a>解压环境安装包Win_php5inst,将php-5.2.3-Win32目录下的PHP5文件夹复制到C:\ ,并给C:\PHP5 添加来宾帐户,添加方法:右键PHP5文件夹=> 安全=> 添加=> 高级=> 立即查找在搜索结果中找到IUSR_ 开头的用户,权限默认,确认即可!b>右键我的电脑=> 属性=> 高级=> 环境变量=> 系统变量=> 选择Path 变量=>编辑=> 在变量值添加C:\PHP5 注意哦:跟前面的值要用分号隔开c>设定PHPRC环境变量,右键我的电脑=> 属性=> 高级=> 环境变量=> 系统变量= > 新建=> => 按确定完成,做完c>和b>两步后,记得要重启服务器哦,光注销是不够的d>右键我的电脑=> 管理=> 服务和应用程序=> internet信息服务(iis)管理器=>右键web服务扩展=> 添加一个新的web服务扩展=>扩展名PHP5,在要求的文件中添加php-cgi.exe,设置扩展状态为应许。

确定添加操作完成。

第1章:PHP介绍及服务器环境配置

第1章:PHP介绍及服务器环境配置

几乎可以运行在所有计算机平台上 支持最新的http/1.1协议 简单而且强有力的基于文件的设置(httpd.conf) 支持通用网关接口(CGI)、FASTCGI。支持虚拟主机, 支持http认证。 具有对用户会话过程的跟踪能力。 支持JAVA SERVLETS。 运行效率高,成本低。
3.PHP5+Apache服务器安装配置
2.PHP5+IIS服务器安装配置
添加系统变量 将PHP的安装目录添加到系统变量中去,这样保证PHP的 配置信息和动态链接库能够被系统找到。
2.PHP5+IIS服务器安装配置
2.2 将PHP和IIS建立关联
添加应用程序扩展名映射
添加WEB服务扩展(win2003)
2.PHP5+IIS服务器安装配置

在httpd.conf中加入:PHPIniDir “c:/php5”
作业:

完成PHP与IIS的配置 完成PHP与Apache的配置
网页结合
学习门槛 函数支持 系统安全 升级速度

低 多 佳 快

低 少 差 慢

高 多 佳 较慢
2 PHP5+IIS服务器安装配置
PHP服务器介绍
数据库存取
Internet访问者
PHP 程序
文件存取 网络功能
Web服务服务器安装配置
2.1 IIS简介及其安装
IIS(Internet Information Server)是目前使用较为广 泛的WEB服务器之一。由微软公司开发,目前只能运 行在Windows系列操作系统上。
安装演示(实际操作)
2.PHP5+IIS服务器安装配置
2.2 PHP安装 Php.ini-dist修改为php.ini进行参数设置

phpstudy搭建Linux的php环境

phpstudy搭建Linux的php环境

phpstudy版(笔记)参考文章:Linux一键安装web环境全攻略phpstudy版(笔记)/414.html/qq_21794887/article/details/61916438注:这里我是把网站主程序放在以 为名称的文件夹下,绑定访问的域名也是相同所以文件路径为phpstudy/www//index.php开始配置在线安装phpstudy一键包:1.在Xshell里面输入wget -c /phpstudy.bin回车2.输入chmod +x phpstudy.bin回车,这一步用于设置权限,要在root权限下操作3.输入./phpstudy.bin回车,执行安装。

接下来都是中文提示操作,选择安装什么版本和选择是lnmp还是lamp,按照提示进行输入回车。

大约需要28分钟的时间。

4.出现这样的信息。

说明你安装完毕:5.域名绑定:输入:phpstudy add会提示让你输入网站访问域名再输入你的网站访问域名6.安装ftp:wget -c /phpstudy-ftpd.sh回车chmod +x phpstudy-ftpd.sh回车./phpstudy-ftpd.sh回车下图说明FTP安装完毕7.开通FTP:输入phpstudy ftp add根据提示输入:FTP用户名密码能打开的目录/phpstudy/www输入目录(注意是绝对目录)就是你网站程序所要存放的目录配置好后就可以通过ftp上传下载文件(可能需要分配权限)8.开启phpstudyphpstudy start9.访问网站这里我是把要上传的程序文件名称改为网址名称()上传文件至/phpstudy/www/ 域名域名就是绑定的域名名称,也就是网站程序所在文件夹的名称(使域名名称和网站程序根目录名称相同)10.sql 文件的导入上传sql文件:/phpstudy/www链接数据库/phpstudy/mysql/bin/mysql -u root -prootmysql>create database abc;mysql>use abc;mysql>set names utf8;mysql>source/phpstudy/www/abc.sql;(/phpstudy/www)我们上传sql文件所在的路径可能出现的问题:打开网站出现SQLSTATE[HY000] [2002] No such file or directory错误时(1)控制台中敲入 ps aux | grep-imysql命令找到mysqld.sock的路径phpstudy版路径为/phpstudy/data/mysql.sock(2)然后通过vi/phpstudy/server/php/etc/php.ini进入php.ini的位置然后修改其中的的三个default_socket的值,使其等于/phpstudy/data/mysql.sock phpstudy环境下路径(3)重启服务器就好了。

万能密码的SQL注入漏洞其PHP环境搭建及代码详解+防御手段

万能密码的SQL注入漏洞其PHP环境搭建及代码详解+防御手段

万能密码的SQL注⼊漏洞其PHP环境搭建及代码详解+防御⼿段⽬录环境搭建这个渗透环境的搭建有以下⼏点基于session的会话登录界⾯登录成功界⾯注销界⾯数据库搭建数据库连接session会话服务器端利⽤session_start()函数发起⼀次session的会话此时我们登录成功后⽤户的数据被保存在服务器端的Cookie: session= ,即sessionID如果需要再次访问服务器端的$_SESSION['...']会获取⽤户session然后与原本存在于服务器的sessionID进⾏⽐对,如果⽐对成功,则证明⽤户正确环境搭建代码创建数据库脚本在MySQL中使⽤source命令即可运⾏脚本:drop database if exists lab;create database lab;use lab;create table users(id int not null auto_increment,username char(32) not null,passcode char(32) not null,primary key(id));insert into users(username,passcode) values('admin','admin123');insert into users(username,passcode) values('alice','alice456');登录界⾯html:<html><head><meta charset="UTF-8"><title>Login</title><style>#a {width: 500px;text-align: center;}.b {width: 200px;height: 30px;}</style></head><body><div id=a><h2>Login!</h2><form name="form_login" method="POST" action="check_login.php">Username:<input type="text" class="b" name="username" /><br> <br>Password:<input type="password" class="b" name="password" /><br><input type="submit" name="Submit" value="Submit" /><input type="reset" name="reset" value="Reset" /></form></div></body></html>查询数据库是否为正确的账号密码php代码<?phpinclude('con_database.php');$username=isset($_POST['username'])?$_POST['username']:'';$password=isset($_POST['password'])?$_POST['password']:'';if($username=='' || $password==''){echo "<script>alert('请输⼊账号和密码!')</script>";exit;}$sql="select * from users where username='$username' and passcode='$password'";$query=mysqli_query($con,$sql) or die('SQL语句执⾏失败'.mysqli_error($con));if ($row=mysqli_fetch_array($query)){session_start();$_SESSION['username']=$row[1];echo "<a href='welcome.php'>欢迎访问</a>";}else{echo "<script>alert('登录失败!');history.go(-1)</script>";}mysqli_close($con);>连接数据库php代码:<?php$con=mysqli_connect('127.0.0.1','root','root') or die("数据库连接失败!");mysqli_select_db($con,'lab')or die("数据库连接失败");>注销登录代码(即关闭session会话)<?phpsession_start();session_unset();session_destroy();echo "注销成功";>登录成功欢迎界⾯:<?phpsession_start();if(isset($_SESSION['username'])){echo "欢迎⽤户".$_SESSION['username']."登录";echo "<br>";echo "<a href=logout.php>退出登录</a>";}else{echo "您没有权限访问";}>⾄此,我们的渗透环境就构建好了万能密码漏洞剖析⽤户名输⼊' or 1=1 or',密码随意,发现可以登录进去密码输⼊ 'or '1=1 也可以登录进去当然登录⽅法不⽌⼀种:原来查询语句是这样的:$sql="select * from users where username='$username' and passcode='$password'";经过注⼊之后,变成:$sql="select * from users where username='' or 1=1 or ' and passcode='****'";我们观察到,where后⾯呃字句中的username被闭合,并且字句分成三个句⼦并⽤or连接。

windowsserver2012配置php环境教程

windowsserver2012配置php环境教程

windowsserver2012配置php环境教程⾸先,下载安装Visual Studio 2010 动态链接库windows server 2012配置php环境教程windows server 2012配置php环境教程在C盘根⽬录创建“php”⽂件夹windows server 2012配置php环境教程将下载到的php⽂件全部复制到“php”⽂件夹中windows server 2012配置php环境教程复制“php.ini-production”并改名为“php.ini”windows server 2012配置php环境教程⽤记事本打开“php.ini”,设置php模块路径extension_dir = "C:\php\ext"windows server 2012配置php环境教程设置php时区date.timezone = Asia/Shanghaiwindows server 2012配置php环境教程开启php短标签short_open_tag = onwindows server 2012配置php环境教程以CGI模式运⾏PHPcgi.force_redirect = 0windows server 2012配置php环境教程fastcgi.impersonate = 1windows server 2012配置php环境教程cgi.rfc2616_headers = 1windows server 2012配置php环境教程PHP拓展板块,按需开启windows server 2012配置php环境教程进⼊IIS控制⾯板选择主页,单击“处理程序映射”windows server 2012配置php环境教程单击“添加模块映射”windows server 2012配置php环境教程输⼊内容后单击“确定”请求路径:*.php模块:FastCgiModule可执⾏⽂件(可选):C:\php\php-cgi.exe名称:FastCgi没有找到FastCgiModule模块的解决⽅法在帖⼦的最下⽅windows server 2012配置php环境教程单击“是”windows server 2012配置php环境教程单击“FastCGI设置”windows server 2012配置php环境教程右击点击“编辑”windows server 2012配置php环境教程将“监视对⽂件所做的更改”改为php.ini的绝对位置 C:\php\php.iniwindows server 2012配置php环境教程单击“聚合编辑器”右边的按钮windows server 2012配置php环境教程添加信息,单击“确定”Name:PHP_FCGI_MAX_REQUESTSValue:1000windows server 2012配置php环境教程在IIS控制⾯板中,单击“默认⽂档”windows server 2012配置php环境教程增加“index.php”windows server 2012配置php环境教程在默认的站点下新建⼀个名为“index.php”的⽂件windows server 2012配置php环境教程编辑“index.php”,测试PHP信息,保存退出<?phpphpinfo();>windows server 2012配置php环境教程注:有些⼩伙伴可能找不到“FastCgiModule”板块,那是因为没有安装CGI,只需要在“添加⾓⾊和功能向导”中选中CGI并安装就可以了windows server 2012配置php环境教程。

[lnmp(centos6.2+nginx+mysql+php)环境搭建系统教程--之第五步php安装]

[lnmp(centos6.2+nginx+mysql+php)环境搭建系统教程--之第五步php安装]

php安装将libiconv-1.13.1.tar.gz上传至/software#tar zxf libiconv-1.13.1.tar.gz#cd libiconv-1.13.1#./configure --prefix=/usr/local/#make && make install#cd ..将libmcrypt-2.5.8.tar.gz 上传至/software#tar zxf libmcrypt-2.5.8.tar.gz#cd libmcrypt-2.5.8#./configure#make && make install#/sbin/ldconfig#cd libltdl#./configure --enable-ltdl-install#make && make install#cd ../../将mhash-0.9.9.9.tar.gz上传至/software#tar zxf mhash-0.9.9.9.tar.gz#cd mhash-0.9.9.9/#./configure#make && make install#cd ../#ln -s /usr/local/lib/ /usr/lib/#ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so#ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4#ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 #ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a#ln -s /usr/local/lib/ /usr/lib/#ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so#ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2#ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1 #ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config将mcrypt-2.6.8.tar.gz上传至/software#tar zxvf mcrypt-2.6.8.tar.gz#cd mcrypt-2.6.8/#/sbin/ldconfig#./configure#make && make install#cd ../将php-5.4.3.tar.gz上传至/softwarephp5.3.3以后的版本源码不需要再打php-fpm补丁,该补丁已集成进php5.3.3, 在编译时,不需再–enable-fastcgi了,在php5.3.3中强制启用fastcgi了。

Windows 2008R2+IIS7.5+PHP+Mysql+Wincache+Memcache+URL伪静态环境搭建教程

:由于种种原因,服务器一直都用Windows 2003,之前有感于Processed in一直都高于2.0,于是不得已痛下决心,预计花费一天时间等待机房技术帮安装Windows 2008操作系统,中途还是比较周折,刚开始由于没有说明机房技术安装的是Windows 2008 32位的。

一想这怎么行呢,有64位不用我干嘛整那32位的呢,于是在一小阵子纠结后果断又安排机房技术重新给安装Windows 2008 R2,顺便说一下,Windows 2008 R2没有32位的,只有64位一个版本。

以后别傻了,要记住教训,若不是机房技术人品好,恐怕来回让你折腾烦了,给你一拖再拖,网站瘫痪在那时间一久伤不起啊。

下面还是进入正题吧,首先我们来讲一下我们看完此教程后需要完成的目标:Windows 2008R2+IIS7.5+PHP+Mysql+Wincache+Memcache+URL伪静态环境搭建+并做适当的Discuz优化注:此教程适合新手或没有搭建成功人士,高手算了,人生苦短就飞过吧!本人水平有限,难免有不足地方,如有错误地方请指正,尊重原创,转载请注明!本文原文地址:/thread-70329-1-1.html整个环境的搭建与测试大致可以分为十部分来:我们需要安装好一个Windows 2008 R2 操作系统,这一步我想不是我们这个阶段所要考虑的事情,因为很多东西需要机房的技术来配合你来完成。

你想做也无法做,所以此步略过!:安装IIS7.5与FastCGI,因为Windows 2008R2自带环境了IIS7.5与FastCGI,这一点与IIS6.0区别很大,IIS6.0需要自己安装FastCGI.而IIS7.5 自带已集成了FastCGI 模块,所以只要安装时只要勾选上CGI模块后,即可装上FastCGI.:安装MySql 5.5.29,这个不用说了,开源的数据库软件系统,Discuz必不可少。

如何配置MySql请看分节教程!:选择正确的PHP版本,并下载。

32位Win7下php5VC11环境配置(图文)

32位Win7下php5VC11环境配置(图文)2014-12-211、关于PHP的版本:(1)IIS 做服务器如果想使用IIS配置PHP的话,那么需要选择Non-Thread Safe(NTS)版本的PHP(2)Apache 做服务器如果你是用的Apache的版本来自Apache Lounge(website:/),可以使用PHP VC11 x86或者x64版本。

如果你使用的是从下载的Apache1或者Apache2来搭建PHP环境的话,只能使用VC6版本,无法使用VC9+以上版本。

(3)VC9 和VC11 的区别(使用VC9或者VC11只能从/下载Apache的服务器。

)VC9和VC11是PHP的最新版本(这两个版本分别通过Visual Studio 2008和Visual Studio 2012编译),其中包含了对于性能和稳定性的改进。

VC9版本要求用户安装Microsoft Visual C++ 2008 SP1 Redistributable Package (x86 | x64)VC11版本要求用户安装Visual C++ Redistributable for Visual Studio 2012(x86 | x64)2、软件下载(1)下载Apach VC11文件名:httpd-2.4.10-win32-VC11.zip下载地址:/download/(2)下载PHP VC11文件名:php-5.6.2-Win32-VC11-x86.zip下载地址:/download/(3)下载Visual Studio 2012由于PHP VC11是Visual Studio 2012编译的,需要安装Visual Studio 2012。

下载地址:/en-us/download/details.aspx?id=30679 下载文件名:vcredist_x86.exe下载vcredist_x86.exe文件。

PHP集成开发环境Zend+Studio的配置及调试技术详细讲解

(一)Windows下PHP集成环境Zend Studio配置1.安装php5我下载了php5.2.6(一般是直接解压就可以使用)。

假设解压到”c:\php5”;2.安装MySQL5.X3.安装Apache,将httpd.conf中的Listen端口改为8080;4.前面3步的详细安装和配置见: /396255/228434。

假设将最终的服务器脚本运行目录(比如Apache2.2\htdocs目录)放在定为”d:\PhpWeb”。

5.安装Zend Studio通过/zend-studio-all-in-one-download/链接到官方网站,例如下载Zend Studio 7.2.1版本。

并一步步安装。

为了方便起见,将workspace确定为”d:\PhpWeb”6.安装配置Zend Debug/studio_debugger/5.2.26/ZendDebugger-v5.2-windows-i386.zip官方<1>下载到Zend Debugger的最新版。

解压后可以看到适应很多php版本的Zend Debugger,比如4_3_x_comp里面的适应php4.3.x的版本等等。

为了适应我的php5.2.6,这里选了5_2_x_comp里面的ZendDebugger.dll文件。

<2>然后将选择的ZendDebugger.dll文件第一步中提到的C:\php5\ext目录下。

再在C:\php5下的ph p.in文件中的末尾添加以下的内容(任意合适的位置都可以):[zend]zend_extension_ts="c:\php5\ext\ZendDebugger.dll"zend_debugger.allow_hosts=127.0.0.1/32,127.0.0.1/24zend_debugger.expose_remotely=alwayszend_extension_ts<3> 将<1>中Zend Debugger的解压根目录下的dummy.php文件复制到apache的Document Root目录中,这里指的是”d:\PhpWeb”(按我的设置,这个目录同时也是Zend Studio 的workspace);<4> 测试Zend Debug安装是否成功。

arm11+apache+php-5.2.0+sqlite开发环境的搭建

文件编号: 受控状态: 程序版本: 受控期限: 起草人: 起草日期: 2012-04-12 审核人: 审核日期: 批准人: 批准日期: 分发号: 分发日期: 密级:

基于ARM11嵌入式WEB开发环境的搭建 StmAtmV3.0 PHP库接口说明 嵌入式WEB开发

重庆重邮东电通信技术有限公司 第 2 页 共38页 文档控制记录 序号 修改状态 修改内容 修改人 完成时间 V1.0 创建文档 完成本文档的所有章节内容 2011-11-11 V1.1 增加文档 完成将php升级到php5.2.0版本 2012-4-12 增加文档 完成Sqlite的搭建 2012-4-12 基于ARM11嵌入式WEB开发环境的搭建 嵌入式WEB开发

第 3 页 共 38 页 编写:杨洪 目录 文档控制记录 ................................................................................................................................... 2 1、引言 ............................................................................................................................................. 4 2、主机web开发环境搭建 ............................................................................................................. 5 2.1、安装开发包 ...................................................................................................................... 5 2.1.1安装apache-1.3.39 .................................................................................................... 5 2.1.2安装php-4.4.8............................................................................................................ 5 2.2、配置httpd.conf与php.ini文件 .......................................................................................... 5 2.2.1 配置httpd.conf .......................................................................................................... 6 2.2.2 配置php.ini文件 .................................................................................................... 10 2.3、联机调试 ........................................................................................................................ 10 3、基于ARM11嵌入式web开发环境的搭建 .............................................................................. 11 3.1配置ARM11的交叉编译环境........................................................................................... 11 3.2、安装开发包 .................................................................................................................... 13 3.1.1交叉编译apache-1.3.39........................................................................................... 13 3.1.2交叉编译PHP ......................................................................................................... 16 3.2、配置httpd.conf与php.ini文件 ........................................................................................ 27 3.2.1配置httpd.conf ......................................................................................................... 28 3.2.2配置php.ini .............................................................................................................. 32 3.3、联机调试 ........................................................................................................................ 32 4、Apache与php文件结构 ........................................................................................................... 36 4.1、Apache文件结构 ............................................................................................................ 36 4.2、PHP文件结构 ................................................................................................................ 37 基于ARM11嵌入式WEB开发环境的搭建 嵌入式WEB开发

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux 下PHP环境搭建安装环境:PHP+lghttpd + mysql1 yum install lighttpd2 yum install fcgi mysql mysql-server php3 yum install lighttpd-fastcgi4 yum install phpmyadmin phppgadmin pgadmin3#chkconfig --level 345 mysqld on#chkconfig --level 345 lighttpd on启动模块设置vim /etc/lighttpd/lighttpd.conf14 server.modules = (15 "mod_rewrite",16 # "mod_redirect",17 # "mod_alias",18 "mod_access",19 # "mod_trigger_b4_dl",20 # "mod_auth",21 # "mod_status",22 # "mod_setenv",23 "mod_fastcgi",24 # "mod_proxy",25 # "mod_simple_vhost",26 # "mod_evhost",27 # "mod_userdir",28 "mod_cgi",29 # "mod_compress",30 # "mod_ssi",31 # "mod_usertrack",32 # "mod_expire",33 # "mod_secdownload",34 # "mod_rrdtool",35 "mod_accesslog" )36安装环境:PHP+lghttpd + postgresql1:yum install lighttpd红旗自带apache2作为默认的web服务器。

在原来的系统中就是使用apache作为web 页面的服务器,apache占用的内存很多,一个apache进程占用的内存大约是20M,最大的可能占到35M以上,占用的共享内存都在100多M以上。

而且apache是一个多进程响应服务,这样apache的进程占用内存更多。

因此经长时间运行,会出现由于内存不够而无法访问界面的情况。

lighttpd是一个理想的替代方案。

其是一个非常轻便的web服务器,虽然它的功能没有apache强大,但是可以满足大部分的服务要求。

它的内存占用量一般是2M左右,占用的共享内存是20M左右,而且与apache实现机制不同的是,lighttpd采用单进程多路复用的方式响应请求,在系统中一般只有一个lighttpd进程响应服务请求。

(也可配置为多进程)所以从内存占用量的角度看,lighttpd就有很大的优势。

此外,lighttpd也可以通过配置fast-cgi支持php应用。

参照:/u3/109488/showart_2142285.html2:yum install fcgi lighttpd-fastcgi什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI(/articles/what-is-cgi-fastcgi-php-fpm-spawn-fcgi/)CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。

CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。

如php,perl,tcl等什么是FastCGIFastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。

它还支持分布式的运算, 即FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。

众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。

FastCGI与CGI特点1、如CGI,FastCGI也具有语言无关性.2、如CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。

(APIs把应用程序的代码与核心的web服务器链接在一起,这意味着在一个错误的API的应用程序可能会损坏其他应用程序或核心服务器; 恶意的API的应用程序代码甚至可以窃取另一个应用程序或核心服务器的密钥。

)3、FastCGI技术目前支持语言有:C/C++、Java、Perl、Tcl、Python、SmallTalk、Ruby 等。

相关模块在Apache, ISS, Lighttpd等流行的服务器上也是可用的。

4、如CGI,FastCGI的不依赖于任何Web服务器的内部架构,因此即使服务器技术的变化, FastCGI依然稳定不变。

FastCGI的工作原理1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。

3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。

Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。

当FastCGI子进程关闭连接时,请求便告处理完成。

FastCGI子进程接着等待并处理来自FastCGI 进程管理器(运行在Web Server中)的下一个连接。

在CGI模式中,php-cgi在此便退出了。

在上述情况中,你可以想象CGI通常有多慢。

每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。

使用FastCGI,所有这些都只在进程启动时发生一次。

一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。

FastCGI的不足因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。

Nginx 0.8.46+PHP 5.2.14(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。

如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。

上面的数据摘自Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)什么是PHP-CGIPHP-CGI是PHP自带的FastCGI管理器。

启动PHP-CGI,使用如下命令:php-cgi -b 127.0.0.1:9000PHP-CGI的不足1、php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启2、直接杀死php-cgi进程,php就不能运行了。

(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程。

)什么是PHP-FPMPHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在/download下载得到.PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。

必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。

现在我们可以在最新的PHP 5.3.2的源码树里下载得到直接整合了PHP-FPM的分支,据说下个版本会融合进PHP的主分支去。

相对Spawn-FCGI,PHP-FPM在CPU和内存方面的控制都更胜一筹,而且前者很容易崩溃,必须用crontab进行监控,而PHP-FPM则没有这种烦恼。

PHP5.3.3已经集成php-fpm了,不再是第三方的包了。

PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多有点,所以被PHP官方收录了。

在./configure的时候带–enable-fpm参数即可开启PHP-FPM。

使用PHP-FPM来控制PHP-CGI的FastCGI进/usr/local/php/sbin/php-fpm{start|stop|quit|restart|reload|logrotate}--start 启动php的fastcgi进程--stop 强制终止php的fastcgi进程--quit 平滑终止php的fastcgi进程--restart 重启php的fastcgi进程--reload 重新平滑加载php的php.ini--logrotate 重新启用log文件什么是Spawn-FCGISpawn-FCGI是一个通用的FastCGI管理服务器,它是lighttpd中的一部份,很多人都用Lighttpd的Spawn-FCGI进行FastCGI模式下的管理工作,不过有不少缺点。

而PHP-FPM 的出现多少缓解了一些问题,但PHP-FPM有个缺点就是要重新编译,这对于一些已经运行的环境可能有不小的风险(refer),在php 5.3.3中可以直接使用PHP-FPM了。

Spawn-FCGI目前已经独成为一个项目,更加稳定一些,也给很多Web 站点的配置带来便利。

已经有不少站点将它与nginx搭配来解决动态网页。

最新的lighttpd也没有包含这一块了(/search?q=Spawn-FCGI),但可以在以前版本中找到它。

相关文档
最新文档