Использование WEBrick для обслуживания веб-приложений на PHP - PullRequest
5 голосов
/ 25 марта 2011

Я разработчик PHP, который начал изучать Ruby on Rails. Мне нравится, как легко приступить к разработке приложений на Rails. Одна из вещей, которые я люблю больше всего, это WEBrick. Это позволяет вам не настраивать Apache и Virtual Hosts для каждого небольшого проекта, над которым вы работаете. WEBrick позволяет вам легко запускать и выключать сервер, чтобы вы могли переключаться между своими веб-приложениями.

Я не всегда могу позволить себе роскошь работать с приложением Ruby on Rails, поэтому мне было интересно, как я могу настроить (или изменить) WEBrick, чтобы использовать его для обслуживания моих проектов PHP и приложений Zend Framework.

Вы пытались это сделать? Каковы были бы необходимые шаги для достижения этого?

Ответы [ 4 ]

6 голосов
/ 03 декабря 2012

Чтобы получить поддержку php в webrick, вы можете использовать обработчик для файлов php.Для этого вам нужно расширить HttpServlet::AbstractServlet и реализовать методы do_GET и do_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.Вы можете взглянуть на PHPHandler на GitHub:

https://github.com/questmaster/WEBrickPHPHandler

3 голосов
/ 25 марта 2011

Вы можете использовать nginx или lighttpd

Вот минимальный конфиг lighttpd.

  1. Установите PHP с поддержкой FastCGI и настройте параметр «bin-path» ниже для своей системы. Вы можете установить его с MacPorts , используя sudo port install php5 +fastcgi
  2. Назовите этот файл lighttpd.conf
  3. , затем просто запустите lighttpd -f lighttpd.conf из любого каталога, который вы хотите обслуживать.
  4. Откройте браузер для локального хоста: 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 на то же самое, вот указатель .

0 голосов
/ 25 марта 2011

Похоже, WEBrick имеет поддержку CGI , что означает, что вы можете запустить PHP, вызвав его как скрипт CGI.Строка #! в верхней части каждого исполняемого файла должна указывать на абсолютный путь к php-cgi.exe.

Стоит отметить, что вам понадобится для удаления строки #! при перемещении файла на любой другой сервер, который не считает PHP сценарием CGI, что... э-э ... всех их.

0 голосов
/ 25 марта 2011

Я нашел это , но я действительно думаю, что это не стоит хлопот.Делать виртуальный хост (который даже не нужен) так сложно?За то время, которое понадобится вам, чтобы настроить его для работы с PHP, если вы даже можете заставить его работать, вы могли бы написать скрипт, который создает записи для виртуального хоста, делая это так же просто, как webrick.

...