Plack で PHP アプリの開発をしたら何故か捗った話し
普段のお仕事では相変わらず PHP な hatyuki です。
普段お仕事では Windows PC に VirtualBox をインストールし、その中の Debian 上で開発しています。
Perl / PSGI で開発するときは plackup がありますが、PHP (<= 5.3) で開発する場合は、開発環境にも Web サーバが必要なため、普段は Apache などをインストールしていましたが、若者の Apache 離れが深刻な昨今は、Plack::App::PHPCGI というミドルウェアを使って開発を行なっています。
使っている .psgi アプリはこんな↓感じ。
- app.psgi
use strict; use warnings; use File::Basename qw/ dirname /; use File::Spec; use Plack::App::PHPCGI; use Plack::Builder; my $basedir = dirname(__FILE__); my $PHPCGI = '/usr/bin/php-cgi'; # php-cgi へのパス $ENV{PHPRC} = File::Spec->catfile( $basedir, 'etc', 'php.development.ini' # php.ini を個別に使い分けたい場合 ); $ENV{HOGE} = 'fuga'; # 環境変数の設定が必要な場合 builder { enable 'ReverseProxy'; for my $asset (qw/ css img js/) { enable 'Static', ( path => qr{^/$asset}, root => File::Spec->catdir($basedir, 'www'), ); } enable 'Plack::Middleware::Static', ( path => qr{^(?:/robots\.txt|/favicon\.ico)$}, root => File::Spec->catdir($basedir, 'www'), ); mount '/' => Plack::App::PHPCGI->new( script => File::Spec->catfile($basedir, 'www', 'index.php'), php_cgi => $PHPCGI, ); }
あとは、エントリポイントとなる www/index.php を用意して。。。
<?php require_once 'path/to/my/framework.php'; // 使ってるフレームワークによりけり AyAppFramework::run( );
plackup して
$ plackup
あとはブラウザで http://localhost:5000/ にアクセスすれば PHP アプリの確認を Plack を使ってすることができました。
だいたいこれで今のところは不便なく、というより Apache 使っているときよりも便利かもしれない。
というのが感想。