[英]Using WEBrick to serve PHP web applications
我是一名PHP開發人員,已經開始學習Ruby on Rails。 我喜歡開發和運行開發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:
這是一個最小的lighttpd配置。
sudo port install php5 +fastcgi
在MacPorts中安裝它 lighttpd -f lighttpd.conf
。 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腳本的服務器的行,這將是...呃......所有的'。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.