5

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

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

你有没有尝试过这个?为了实现这一目标,需要采取哪些必要步骤?

4

4 回答 4

6

要在 webrick 中获得 php 支持,您可以使用 php 文件的处理程序。为此,您必须扩展HttpServlet::AbstractServlet和实现do_GETanddo_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安装添加了选项。在这里,它启用目录列表和处理 php 文件PHPHandler。之后,可以使用 启动服务器s.start()

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

https://github.com/questmaster/WEBrickPHPHandler

于 2012-12-03T19:15:13.613 回答
3

您可以使用nginxlighttpd

这是一个最小的 lighttpd 配置。

  1. 安装支持 FastCGI 的 PHP 并为您的系统调整下面的“bin-path”选项。您可以使用MacPorts安装它sudo port install php5 +fastcgi
  2. 将此文件命名为 lighttpd.conf
  3. 然后只需lighttpd -f lighttpd.conf从您想要服务的任何目录运行。
  4. 打开你的浏览器到 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 来做同样的事情,这里有一个指针

于 2011-03-25T20:55:29.510 回答
0

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

于 2011-03-25T20:27:27.440 回答
0

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

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

于 2011-03-25T20:29:03.260 回答