Windows 下 Apache 1.3 以 FastCGI 模式运行 PHP

2016-02-19 21:48 8 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐Windows 下 Apache 1.3 以 FastCGI 模式运行 PHP,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - Web开发 】

  我一直以来都是以 ISAPI 模式运行 PHP 的,这种方式最大的缺点就是稳定性不好,当 PHP 出错的时候,Apache进程也死掉了。后来看到网上关于 PHP 以 FastCGI 模式运行的介绍,其中提到的种种好处(稳定、安全、高性能)让我决定尝试一下。

  不过事情远不如预计的那么顺利。Google 了无数次也没找到一篇如何在 Windows 下用 Apache + FastCGI 跑 PHP 的资料,IIS + FastCGI 跑 PHP 的倒是不少。其中有一篇提到 Zend 公司也推荐以 FastCGI 模式运行 PHP(http://phplens.com/phpeverywhere/fastcgi-php)。

  经过几个小时的摸索,终于成功实现了 Apache 1.3 + FastCGI 跑 PHP。

  准备工作:
  首先访问 http://www.fastcgi.com/dist/ 下载用于 Apache 的 mod_fastcgi。我使用的是 mod_fastcgi-2.4.2-AP13.dll。下载后将这个文件复制到 Apache 的 modules 目录中。

  下载 PHP(我使用的 PHP-5.0.4),并解压缩,根据需要修改 php.ini 文件。注意不需要从 PHP 所在目录复制任何文件到 Windows 目录中。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  修改配置:
  然后修改 httpd.conf 文件,加入下面几行:

  LoadModule fastcgi_module modules/mod_fastcgi-2.4.2-AP13.dll
  ScriptAlias /fcgi-php5/ "d:/usr/local/php-5.0.4/"
  FastCgiServer "d:/usr/local/php-5.0.4/php-cgi.exe" -processes 3
  # 说明:此处的 -processes 3 表示启动三个 php-cgi.exe 进程,
  # 关于 FastCgiServer 的详细参数请参考 FastCGI 文档。
  AddType application/x-httpd-fastphp5 .php
  Action application/x-httpd-fastphp5 "/fcgi-php5/php-cgi.exe"
  # 说明:根据你的 PHP 文件所在位置修改上面两处黑体字。

  修改完成后,重新启动 Apache 即可。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  常见问题:
  根据我的多次试验,最容易出现的几个问题主要都是由路径引起的。因此首先检查 php.ini 和 httpd.conf 文件中的所有路径是否正确。其次就是如果系统中以前安装过 PHP,那么要将 C:Windowsphp.ini 改名或删除。

  其次还要检查 PHP 文件所在目录是否有足够的权限(我都是设置为 Everyone - 完全控制,反正开发用机不用考虑那么多安全限制)。

  FastCGI 模式运行 PHP 的优点:
  以 FastCGI 模式运行 PHP 有几个主要的好处。首先就是 PHP 出错的时候不会搞垮 Apache,只是 PHP 自己的进程当掉(但 FastCGI 会立即重新启动一个新 PHP 进程来代替当掉的进程)。其次 FastCGI 模式运行 PHP 比 ISAPI 模式性能更好(我本来用 ApacheBench 进行了测试,但忘了保存结果,大家有兴趣可以自己测试)。

  最后,就是可以同时运行 PHP5 和 PHP4。参考下面的配置文件,分别建立了两个虚拟主机,其中一个使用 PHP5,另一个使用 PHP4。

  LoadModule fastcgi_module modules/mod_fastcgi-2.4.2-AP13.dll

  ScriptAlias /fcgi-php5/ "d:/usr/local/php-5.0.4/"
  FastCgiServer "d:/usr/local/php-5.0.4/php-cgi.exe" -processes 3
  ScriptAlias /fcgi-php4/ "d:/usr/local/php-4.3.11/"
  FastCgiServer "d:/usr/local/php-4.3.11/php.exe"

  Listen 80
  NameVirtualHost *:80

  DocumentRoot d:/www
  Options Indexes FollowSymlinks MultiViews
  ServerName php5.localhost

  AddType application/x-httpd-fastphp5 .php
  Action application/x-httpd-fastphp5 "/fcgi-php5/php-cgi.exe"

  
  IndexOptions FancyIndexing FoldersFirst
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  Allow from all

   

  Listen 8080
  NameVirtualHost *:8080

  
  DocumentRoot d:/www
  Options Indexes FollowSymlinks MultiViews
  ServerName php4.localhost

  AddType application/x-httpd-fastphp4 .php
  Action application/x-httpd-fastphp4 "/fcgi-php4/php.exe"

  
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  Allow from all

  
  使用上面的配置,访问 http://localhost/ 就使用 PHP5,而访问 http://localhost:8080/ 就使用 PHP4。所以只要合理配置,就可以让不同的虚拟主机使用不同版本的 PHP。

  FastCGI 模式的一些缺点:
  说完了好处,也来说说缺点。从我的实际使用来看,用 FastCGI 模式更适合生产环境的服务器。但对于开发用机器来说就不太合适。因为当使用 Zend Studio 调试程序时,由于 FastCGI 会认为 PHP 进程超时,从而在页面返回 500 错误。这一点让人非常恼火,所以我在开发机器上还是换回了 ISAPI 模式。

  最后,在 Windows 中以 FastCGI 模式存在潜在的安全漏洞。因为我还没有找到如何在 Windows 环境下实现 SuEXEC 的方法,因此 PHP 的进程总是以最高权限运行,这从安全角度来看显然不是个好消息。

  结束语:
  本文对 FastCGI 的运用还停留在很初级的阶段,仅当作抛砖引玉,希望有更成熟的解决方案出现。

来源:https://www.tulaoshi.com/n/20160219/1627189.html

延伸阅读
标签: PHP
  以前为了图方便,是用套件包.版本很久了,是apache1.X.Mysql4.X,PHP4.X的.现在已经过时很久了..而且漏洞一大堆,幸好我只是在本地使用...不过为了追潮流,就鸟枪换炮咯.. 所用软件版本: mysql-5.0.4-beta-win32 apache_2.0.54-win32-x86-no_ssl php-5.0.3-Win32 phpMyAdmin-2.6.2-rc1 ZendOptimizerWindows-i386 以上软件可以到各大...
标签: 服务器
windows下Apache配置SSL安全连接   什么是SSL? SSL(Secure Socket Layer): 是为Http传输提供安全的协议,通过证书认证来确保客户端和网站服务器之间的数据是安全。Open SSL下载地址:http://www.openssl.org/source/ 一、下载并安装 支持SSL的 Apache 1.安装配有SSL模块的apache, 下载地址http://httpd.apache.o...
标签: Web开发
先从网站上下载APACHE2.2.3 Mysql 5.0.22 PHP 5.2.0 假设:系统盘为 c:/ 假设:安装好后目录状态会是这样子: apache------------------------- C:Program FilesApache Software FoundationApache2.2 mysql---------------------------C:Program FilesMySQLMySQL Server 5.0 php----------------------------- c:/php ...
标签: PHP
  五、在Windows NT下运行Apache 如果你运行的Windows NT系统,你可能要将Apache作为系统的服务进程来运行。点击“开始”按钮,选择“程序”,“Apache Web Server”,“Insfall Apache as Service”。这样,你可以通过NT的控制面版中的“服务”程序来管理Apache的启动和终止。除非有特殊的理由,我建议你将“Apache Service”的运行方...
标签: PHP
  在PHP邮件列表中问得最多的问题可能就是:“如何在我的Windows机器上安装PHP?”,那么也许我可以帮助回答这个问题。当你正确安装完成后,你会发现在Windows下开发PHP程序还是不错的。 本教程的目的是向你展示如何用“Apache和Windows”的组合来开发PHP程序。 教程中如未指明具体版本,则PHP为PHP3或PHP4 Beta 2或3,Apache为 1.3.x...

经验教程

420

收藏

72
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部