使用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_GET
和do_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:
您可以使用nginx或lighttpd
这是一个最小的lighttpd配置。
- 使用FastCGI支持安装PHP并调整系统下面的“bin-path”选项。 你可以使用
sudo port install php5 +fastcgi
在MacPorts上安装它 - 将此文件命名为lighttpd.conf
- 然后从你想要服务的任何目录中运行
lighttpd -f lighttpd.conf
。 - 将您的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脚本的服务器时的行,这将是…呃…所有的’。