使用WEBrick来提供PHP Web应用程序

时间:2011-03-25 20:17:22

标签: php ruby webrick

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

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

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

4 个答案:

答案 0 :(得分:6)

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

要让PHPHandler处理php文件,您必须将其添加到特定挂载的HandlerTable。你可以这样做:

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

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

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

https://github.com/questmaster/WEBrickPHPHandler

答案 1 :(得分:3)

您可以使用nginxlighttpd

这是一个最小的lighttpd配置。

  1. 使用FastCGI支持安装PHP并调整系统下面的“bin-path”选项。您可以使用sudo port install php5 +fastcgi
  2. 使用MacPorts进行安装
  3. 将此文件命名为lighttpd.conf
  4. 然后只需从您要提供的任何目录中运行lighttpd -f lighttpd.conf
  5. 将您的网络浏览器打开到localhost:8000
  6. 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配置为here's a pointer

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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