はちゅにっき

こっちのブログはまったり更新

Plack で PHP アプリの開発をしたら何故か捗った話し

普段のお仕事では相変わらず PHP な hatyuki です。

普段お仕事では Windows PC に VirtualBox をインストールし、その中の Debian 上で開発しています。
Perl / PSGI で開発するときは plackup がありますが、PHP (<= 5.3) で開発する場合は、開発環境にも Web サーバが必要なため、普段は Apache などをインストールしていましたが、若者の Apache 離れが深刻な昨今は、Plack::App::PHPCGI というミドルウェアを使って開発を行なっています。


使っている .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 使っているときよりも便利かもしれない。
というのが感想。