使用WEBrick为PHP Web应用程序提供服务

我是一名开始学习Ruby on Rails的PHP开发人员。 我喜欢开发和运行开发Rails应用程序是多么容易。 我最喜欢的一件事是WEBrick。 它使您无需为正在处理的每个小项目配置Apache和虚拟主机。 WEBrick允许您轻松启动和关闭服务器,以便您可以单击Web应用程序。

我并不总是能够使用Ruby on Rails应用程序,所以我想知道如何配置(或修改)WEBrick以便能够使用它来提供我的PHP项目和Zend Framework应用程序。

你试过这个吗? 为实现这一目标,必要的步骤是什么?

要在webrick中获得php支持,您可以使用php文件的处理程序。 为此,您必须扩展HttpServlet::AbstractServlet并实现do_GETdo_POST方法。 从浏览器调用这些方法用于GET和POST请求。 在那里你只需要将传入的请求提供给php-cgi

要让PHPHandler处理php文件,你必须将它添加到特定mount的HandlerTable中。 你可以这样做:

 s = HTTPServer.new( :Port => port, :DocumentRoot => dir, :PHPPath => phppath ) s.mount("/", HTTPServlet::FileHandler, dir, {:FancyIndexing => true, :HandlerTable => {"php" => HTTPServlet::PHPHandler}}) 

第一个语句初始化服务器。 第二个添加了DocumentRoot安装的选项。 在这里,它启用目录列表和PHPHandler处理PHP文件。 之后,可以使用s.start()启动服务器。

我自己编写了一个PHPHandler,因为我还没有在其他地方找到它。 它基于webricks CGIHandler ,但经过重新设计才能使用php-cgi 。 你可以看一下GitHub上的PHPHandler:

https://github.com/questmaster/WEBrickPHPHandler

您可以使用nginx或lighttpd

这是一个最小的lighttpd配置。

  1. 使用FastCGI支持安装PHP并调整系统下面的“bin-path”选项。 你可以使用sudo port install php5 +fastcgi在MacPorts上安装它
  2. 将此文件命名为lighttpd.conf
  3. 然后从你想要服务的任何目录中运行lighttpd -f lighttpd.conf
  4. 将您的webbrowser打开到localhost:8000

lighttpd.conf:

 server.bind = "0.0.0.0" server.port = 8000 server.document-root = CWD server.errorlog = CWD + "/lighttpd.error.log" accesslog.filename = CWD + "/lighttpd.access.log" index-file.names = ( "index.php", "index.html", "index.htm", "default.htm" ) server.modules = ("mod_fastcgi", "mod_accesslog") fastcgi.server = ( ".php" => (( "bin-path" => "/opt/local/bin/php-cgi", "socket" => CWD + "/php5.socket", ))) mimetype.assign = ( ".css" => "text/css", ".gif" => "image/gif", ".htm" => "text/html", ".html" => "text/html", ".jpeg" => "image/jpeg", ".jpg" => "image/jpeg", ".js" => "text/javascript", ".png" => "image/png", ".swf" => "application/x-shockwave-flash", ".txt" => "text/plain" ) # Making sure file uploads above 64k always work when using IE or Safari # For more information, see http://trac.lighttpd.net/trac/ticket/360 $HTTP["useragent"] =~ "^(.*MSIE.*)|(.*AppleWebKit.*)$" { server.max-keep-alive-requests = 0 } 

如果您想使用自定义的php.ini文件,请将bin-path更改为:

 "bin-path" => "/opt/local/bin/php-fcgi -c" + CWD + "/php.ini", 

如果你想配置nginx来做同样的事情, 这里有一个指针 。

我发现了这一点 ,但我认为这不值得麻烦。 制作虚拟主机(甚至不需要)那么困难吗? 在你需要将它设置为使用PHP的时候,如果你能使它工作,你可以写一个脚本为你创建虚拟主机条目,使它像webrick一样简单。

看起来WEBrick有CGI支持 ,这意味着你可以通过调用它作为CGI脚本来运行PHP。 #! 每个可执行文件顶部的行只需要指向php-cgi.exe的绝对路径。

值得注意的是,您需要删除#! 将文件移动到任何其他不认为PHP作为CGI脚本的服务器时的行,这将是…呃…所有的’。