5

Ruby on Railsを学び始めたPHP開発者です。Rails アプリケーションの開発を開始して実行するのがいかに簡単かが気に入っています。私が最も気に入っているものの 1 つは WEBrick です。これにより、作業中の小さなプロジェクトごとに Apache と仮想ホストを構成する必要がなくなります。WEBrick を使用すると、サーバーを簡単に起動およびシャットダウンできるため、Web アプリケーションをクリックすることができます。

私はいつも Ruby on Rails アプリで作業する余裕があるわけではないので、WEBrick を構成 (または変更) して、PHP プロジェクトと Zend Framework アプリケーションを提供できるようにする方法を考えていました。

これを試みましたか?これを達成するために必要な手順は何ですか?

4

4 に答える 4

6

webrick で php サポートを取得するには、php ファイルのハンドラーを使用できます。これを行うには、 andメソッドを拡張HttpServlet::AbstractServletして実装する必要があります。これらのメソッドは、ブラウザーからの GET および POST 要求に対して呼び出されます。そこで、着信リクエストを にフィードするだけです。do_GETdo_POSTphp-cgi

PHPHandler に php ファイルを処理させるには、それをHandlerTable特定のマウントに追加する必要があります。次のように実行できます。

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

最初のステートメントは、サーバーを初期化します。DocumentRoot2 つ目は、マウントにオプションを追加します。ここでは、ディレクトリの一覧表示と .php ファイルの処理を有効にしますPHPHandler。その後、サーバーを で起動できますs.start()

他の場所で見つけられなかったので、私は自分で PHPHandler を書きました。これは webricks に基づいていますCGIHandlerが、 で動作するように作り直されていphp-cgiます。GitHub で PHPHandler を確認できます。

https://github.com/questmaster/WEBrickPHPHandler

于 2012-12-03T19:15:13.613 に答える
3

nginxまたはlighttpdを使用できます

これは最小限の 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

WEBrick には CGI サポートがあるようです。これは、CGI スクリプトとして呼び出すことで PHP を実行できることを意味します。各#!実行可能ファイルの先頭にある行は、php-cgi.exe.

PHP を CGI スクリプトと見なさない他のサーバーにファイルを移動する場合は、この行を削除する必要があることに注意してください。#!

于 2011-03-25T20:29:03.260 に答える
0

私はこれを見つけましが、面倒な価値はないと本当に思います。仮想ホスト (必要でさえない) を作るのはそんなに難しいですか? これを PHP で動作するようにセットアップするのにかかる時間内に、それを動作させることができれば、仮想ホスト エントリを作成するスクリプトを記述して、Webrick と同じくらい簡単にすることができたはずです。

于 2011-03-25T20:27:27.440 に答える