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

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

  1. 详解ISA2006三种客户端

    详 解ISA2006三种客户端<?XML:NAMESPACE PREFIX = O /> 上一篇我们介绍了如何部署ISA2006,本文我们要让部署好的ISA来干活了.ISA能干什么活?从字 ...

  2. java同步异步调用_详解java 三种调用机制(同步、回调、异步)

    1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,jsPwwCe它是一种单向调用 2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口: 3:异步调用:一种类似消 ...

  3. HTML标签图文详解(三)

    前两篇博文我们学习了HTML的基础知识与标签 HTML标签图文详解(一) HTML标签图文详解(二) 现在我们开更加深入的学习 本文主要内容 列表标签:<ul>.<OL>.&l ...

  4. python 大智慧 dll_Python调用windows下DLL详解

    前言 朋友的公司是做GPS的,上周联系到我要帮做个程序把他们平台的车辆定位跟踪数据和省里的平台对接.看一下官方提供的三个文档,洋洋洒洒共一百多页,一大堆协议的定义甚是齐全,好在官方的文件中也带有个封装 ...

  5. 详解 Calico 三种模式(与 Fannel 网络对比学习)

    参考 Component architecture calico架构与网络模型深入分析 35 | 解读Kubernetes三层网络方案 calico学习 Kubernetes网络插件Flannel的3 ...

  6. Windows下安装Python 模块的三种方法

    方法一:cmd命令行窗口 首先打开windows上的cmd命令行窗口,再将目录切换到python运行的那个目录下,那怎么查看自己是在那个目录下呢? 鼠标右键点击file,依次点开就可以看到运行路径.在 ...

  7. Windows下生成dump文件的三种方式

    文章目录 前言 一.什么是dump文件? 概述 dump分类 内核模式Dump 用户模式Dump 二.dump生成方式 实现方法 方法一:修改注册表 参数说明 方法二:生动创建转储文件 方法三:通过代 ...

  8. Reactor模式详解及 三种模式演变

    无论是C++还是Java编写的网络框架,大多数都是基于Reactor模式进行设计和开发,Reactor模式基于事件驱动,特别适合处理海量的I/O事件. 什么是Reactor模式 要回答这个问题,首先当 ...

  9. android分屏模式_安卓 7.0 分屏功能详解:三种模式,想分就分

    IT之家讯 8月18日消息,安卓7.0的一大特色就是自带全新分屏功能,分为多画面显示模式.画中画模式和自由分屏模式三种,本文将详细介绍这三种模式. 多画面显示模式 启动该模式的方法有两种,一是在后台应 ...

最新文章

  1. 目前最实用的机器学习算法,你认为是哪几种?
  2. 使用labelme制作自己的深度学习图像分割数据集
  3. cacti 监控安装失败
  4. CentOS下Composer的安装和使用
  5. 大数据之-Hadoop3.x_MapReduce_自定义outputformat案例完善执行---大数据之hadoop3.x工作笔记0123
  6. 吴恩达神经网络和深度学习-学习笔记-4-深度网络
  7. Ample Sound Ample Guitar Metal Hellrazer Mac - 虚拟九弦金属吉他
  8. wmv怎么转换成视频mp4
  9. 在 Word 中插入 Latex 公式
  10. 循环群的子群必然还是循环群
  11. apidoc 自动化生成 api接口文档
  12. 原生小程序 申请小程序 - 发布流程
  13. vue 项目在ie浏览器的兼容问题
  14. 计算机专业前沿算法,CNCC2018 | 研究经典计算机算法已经过时了吗?
  15. 使用javascript抓取网站数据
  16. 督查督办抓铁有痕,推进决策落地生根
  17. 效应论——破窗效应(zt)
  18. BIOS界面部分信息
  19. CSS3西游记师徒取经场景动画
  20. 用python写一段对话_如何用Python写一个微信对话生成器

热门文章

  1. vue使用webPack打包发布后页面显示空白
  2. [pytorch、学习] - 4.2 模型参数的访问、初始化和共享
  3. css --- [小结]让盒子水平垂直居中的解决方案
  4. node --- 创建一个Socket客户端连接到服务器
  5. mysql 全文索引
  6. 吉林省第二条国际铁路联运大通道“长珲欧”启动测试
  7. Language-Directed Hardware Design for Network Performance Monitoring——Marple
  8. 调查显示企业对 Linux 开发人才需求日渐增长
  9. Error-Project facet Java version 1.8 is not supported
  10. rsync+lsyncd实现(本地以及远程)文件实时同步