Windows下图文详解PHP三种运行方式(php_mod、cgi、fastcgi)

PHP能不能成功的在Apache服务器上运行,就看我们如何去配置PHP的运行方式。PHP运行目前为止主要有三种方式:

a、以模块加载的方式运行,初学者可能不容易理解,其实就是将PHP集成到Apache服务器,以同一个进程运行。

b、以CGI的方式运行,CGI英文叫做公共网关接口,就是Apache在遇到PHP脚本的时候会将PHP程序提交给CGI应用程序(php-cgi.exe)解释,解释之后的结果返回给Apache,然后再返回给相应的请求用户。

c、以FastCGI的方式运行。这种形式是CGI的加强版本,CGI是单进程,多线程的运行方式,程序执行完成之后就会销毁,所以每次都需要加载配置和环境变量fork-and-execute(创建-执行)。而FastCGI则不同,FastCGI 像是一个常驻 (long-live) 型的 CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次。FastCGI进程管理器自身初始化,启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。下面我就分别配置这三种运行方式:

1、无论上述哪种方式运行,下面的配置通常都会加上,解压PHP安装包到c:/PHP5/,重命名PHP.ini-recommend文件为PHP.ini,分别寻找如下字段编辑,去除前面的分号(注意不要去错分号,好多是注释信息,仔细辨认)。

error_reporting = E_ALL //开启报错,便于程序员查错 line 342
display_errors = On //显示错误 line 373
extension_dir = "C:/php5/ext" //php的扩展选项文件所在的目录 line 542
date.timezone = Asia/shanhai //时区配置  line 716

2、以模块的方式运行,在Apache(C:/Program Files/Apache Software Foundation/Apache2.2/conf)的配置文件里添加如下配置

LoadModule php5_module "C:/php5/php5apache2_2.dll" //大约line 127
PHPinidir "C:/php5/php.ini"
//修改配置
DirectoryIndex index.html index.php//追加index.php
AddType application/x-httpd-php .php //line 408左右添加

接着我们在apache的根目录下面,默认C:/Program Files/Apache Software Foundation/Apache2.2/htdocs新建php文件index.php,编辑添加如下代码:

<?php
phpinfo();
?>

然后我们在地址栏输入http://localhost/会出现如下界面:注意红色部分和配置的关系

3、cgi的方式运行,需要做如下的配置php配置文件

cgi.force_redirect = 0 //本来是 1 并且去掉注释符号;

修改apache的配置,去掉原来的模块配置

AddType application/x-httpd-php .php
LoadModule php5_module "C:/php5/php5apache2_2.dll"
PHPinidir "C:/php5/php.ini"

=>加入以下配置

AddHandler cgi-script .cgi // line 396

然后我们在目录C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin新建一个cgi文件test.cgi编写如下代码:

#!c:/php5/php-cgi.exe
<?
php php phpinfo();
?>

最后我们访问http://localhost/cgi-bin/test.cgi,出现如下结果则说明配置成功了:

如果同时打开多个则会有很多php-cgi.exe,并且在执行完成之后消失:

4、PHP的fastcig方式运行,首先需要去下载fastcgi模块,默认是没有带这个模块的,而cgi是自带的;下载地址http://httpd.apache.org/mod_fcgid/;解压复制其中的mod_fcgid.so和mod_fcgid.pdb,接下来做如下的配置:

LoadModule fcgid_module modules/mod_fcgid.so // line 128追加
FcgidInitialEnv PHPRC "c:/php5" //php配置文件 line 129追加
AddHandler fcgid-script .php //添加句柄 即后缀 什么样的文件需要fastcgi解释 line 407追加
FcgidWrapper "c:/php5/php-cgi.exe" .php //解释器路径 line 408
Options Indexes FollowSymLinks ExecCGI //line 221 追加 ExecCGI 意思是目录允许执行CGI脚本

是否成功安装,只需要做个PHP文件检查就可以了,我们就用上面的index.php文件:

终于把PHP的运行方式讲完了,初学者一定要亲自试验一下,这篇教程具有一定的难度,要反复思考才能理解其中的意思,涉及到一些专业知识,当然你暂时可以直接使用模块运行方式,等自己对PHP有了一定的理解之后可以再回头看看这篇文章,今天我花了几个小时的时间整理PHP的运行方式,由于作者本人的水平有限,错误之处在所难免!

转载于:https://www.cnblogs.com/52php/p/5668823.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络基础:ISO/OSI网络体系结构知识笔记​

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

mac下安装redis

官网地址&#xff1a;https://redis.io/ 二、下载完成后解压安装 解压命令 tar zxvf redis-6.0.6.tar.gz 切换到redis目录下 cd redis-6.0.6 编译测试 sudo make test 编译安装 sudo make install sudo make test sudo make install

mysql having和where_浅谈Mysql中where和having的区别

一、误区&#xff1a;不要错误的认为having和group by 必须配合使用.二、where和having用法解析&#xff1a;1、 where和having都可以使用的场景&#xff1a;select goods_price,goods_name from goods where goods_price > 100select goods_price,goods_name from goods ha…

ds证据理论python实现_ALI模型理论以及Python实现

https://openreview.net/forum?idB1ElR4cgg模型结构和明天要发BiGAN模型一模一样&#xff0c;但是两篇论文的作者都是独立完成自己的内容的。而且从写作的风格来看emmm完全不一样ALI跟BiGAN的设计一模一样&#xff0c;但是就是没有加Latent regressor。虽然在ALI中也简要地谈到…

IO操作总结

1&#xff0c;读取文件将文件转换为二进制流 1 InputStream in new FileInputStream("C:/test.png"); 2 byte[] photo new byte[in.available()]; 3 in.read(photo); 4 in.close(); View Code2&#xff0c;写文件 1 Outpu…

计算机网络基础:网络标准相关知识介绍

1、常见的制定网络标准的机构 国际标准化组织、国际电信联盟、电子工业协会、电气和电子工程协会、因特网活动委员会 2、常见的网络标准 2.1 电信标准 国际电信联盟&#xff08;ITU&#xff09;1947年成为联合国的一个组织&#xff0c;包括ITU-R、ITU-T、ITU-D组成。 ITU-R:无线…

1-5Tomcat 目录结构 和 web项目目录结构

对应我的安装路径&#xff1a; web项目目录结构 转载于:https://www.cnblogs.com/huiziz/p/5671612.html

execjs执行js出现window对象未定义时的解决_10个常见的JS语言错误总汇

1、 Uncaught TypeError: Cannot Read Property这是 JavaScript 开发人员最常遇到的错误。当你读取一个属性或调用一个未定义对象的方法时&#xff0c;Chrome 中就会报出这样的错误。导致这个错误发生的原因有很多&#xff0c;常见的一种情况是在渲染 UI 组件时&#xff0c;不正…

安卓logcat工具apk_backdoorapk 安卓APK后门捆绑脚本

项目地址https://github.com/dana-at-cp/backdoor-apk项目介绍backdoor-apk是一个bash写的脚本&#xff0c;通过msfvenom生成一个android的payload&#xff0c;然后再使用apktools将payload捆绑到正常的apk文件中。使用方法rootkali:~/Android/evol-lab/BaiduBrowserRat# ./bac…

java8 supplier 接口

Supplier 接口 Supplier 接口是一个供给型的接口&#xff0c;其实&#xff0c;说白了就是一个容器&#xff0c;可以用来存储数据&#xff0c;然后可以供其他方法使用的这么一个接口 *** Supplier接口测试&#xff0c;supplier相当一个容器或者变量&#xff0c;可以存储值*/Tes…

mantis apache mysql_软件测试(软件安装:php+mysql+apache+mantis过程遇到的问题以及解决方法)...

实验环境&#xff1a; Windows 7 64位操作系统浏览器版本: Mozilla Firefox 41.0.0.5378一&#xff0e;PHP的安装① 版本: php-5.4.45-Win32-VC9-x86安装步骤&#xff1a;安装将PHP安装到 D:\PHP下(目录可以自行更改)配置找到PHP目录里的类似 php.ini-dist &#xff0c;…

html登录界面_使用数据库制作一套注册登录系统

经过了那么多个星期的学习&#xff0c;终于到了使用数据库的阶段了&#xff0c;最基本的也就是制作注册登录与数据库连接。首先要制作一个注册窗口先是html界面<效果如图&#xff1a;&#xff08;样子怎么样不重要&#xff0c;重要的是测试&#xff09;这主要是将form数值发…

java8中Predicate用法

Predicate是个断言式接口其参数是<T,boolean>&#xff0c;也就是给一个参数T&#xff0c;返回boolean类型的结果。跟Function一样&#xff0c;Predicate的具体实现也是根据传入的lambda表达式来决定的。 Testpublic void predicate(){/*** Predicate谓词测试&#xff0c…

计算机网络基础:局域网协议相关知识

1、局域网协议的概念 局域网络中的通信被限制在中等规模的地理范围内&#xff0c;比如一所学校&#xff1b;能够使用具体中等或较高数据速率的物理信道&#xff0c;并且具有较低的误码率&#xff1b;局域网络是专用的&#xff0c; 由单一组织机构所使用。 局域网特点&#xff1…

mysql数据库交叉连接_【数据库】内连接、外连接、交叉连接

基本概念关系模型(表)关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。关系模型的数据结构非常简单&#xff1a;一张扁平的二维表。元组&#xff1a;二维表中的具有相同数据类型的某一行属性&#xff1a;二维表中的具有相同数据类型的某一列笛卡尔积(Cartesi…

网络资产管理系统_固定资产管理系统的三种网络架构方式

随着互联网技术的发展和信息技术的广泛使用&#xff0c;固定资产管理系统在各行业的应用越来越普及&#xff0c;固定资产管理系统作为当今主流的企业固定资产信息化管理模式&#xff0c;能够对企业固定资产进行有效管理并提升企业的管理水平。对于固定资产管理系统的网络结构方…

计算机网络基础:广域网协议相关知识笔记

广域网常指覆盖范围广、数据传输速率较低&#xff0c;以数据通信为目的的数据通信网。广域网主要是通过专用的或交换式的连接把计算机连接起来。广域网传输协议主要包括&#xff1a;PPP&#xff08;点对点协议&#xff09;、DDN、ISDN&#xff08;综合业务数字网&#xff09;、…

计算机网络基础:TCP/IP协议相关知识笔记​

1、TCP/IP特性逻辑编址&#xff1a;每一块网卡会在出厂时由厂家分配了唯一的永久性物理地址。针对Internet&#xff0c;会为每台连入因特网的计算机分配一个逻辑地址也就是IP地址。路由选择&#xff1a;专门用于定义路由器如何选择网络路径的协议&#xff0c;即IP数据包的路由选…

终于做出来了

1 <!doctype html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>精英大赛2号 </title>6 <meta name"Keywords" content"关键字">7 <meta name"Desp…