PHP Rampart リリース

PHP でセキュアな Web アプリケーションを作るためのテンプレートエンジン PHP Rampart を公開しました。

「PHP はダメな言語」とよく批判されます。
その理由のひとつに、PHP は初心者でも比較的簡単に Web アプリケーションが作れてしまうので、セキュリティ対策についてあまり詳しくないまま脆弱な Web アプリケーションを作ってしまうケースが多いことが挙げられます。
だったら、そうした人でも簡単にセキュリティ対策が施せるツールがあれば、PHP がダメな子呼ばわりされることも少なくなるのではと思い、作ってみました。
とはいえ、ぼく自身、セキュリティ対策についてはあまり詳しくないので、見よう見まねで作りました。
PHP Ramaprt の使用実績という点でも、当然これからです。
今後自作する Web アプリケーションで実際に使用してみながら、いろいろブラッシュアップしていこうとは思っていますが、ぼく一人の力ではおのずと限界があるでしょう。
できれば、多くの方々に使って頂いて、改良・改善・アドバイス等々をいただければ嬉しいです。
PHP Rampart によって、少しでも危険な Web アプリケーションが減り、PHP のイメージが回復すればいいなーと思います。

PHPでMeCabを使って形態素解析をするときのメモ

PHP で MeCabと言えば MeCab PHP extension を使うのが一般的だろうと思うけど、今回はそれを使わずにやってみようというお話。
extension を使えない環境での MeCab 使用に役に立つかも。
PHP で MeCab を使うときに面倒なのは、解析したい文章を直接システムコマンドの引数として渡すことができないところ。
ファイル名なら引数として渡せるので、一旦ファイルに保存して、それを引数で渡して解析する・・・という方法が採れなくはないけど、なんか美しくない。
やはり、ファイルなど使わず、そのまま直接解析させたい。
そんなときは、結論から書くと、以下のようにすればいい。

$descriptorspec = array(
      0 => array(”pipe”, “r”)
    , 1 => array(”pipe”, “w”)
);
$process = proc_open(”/usr/local/bin/mecab”, $descriptorspec, $pipes);
if (is_resource($process)) {
    fwrite($pipes[0], $text);
    fclose($pipes[0]);
    $result = stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    proc_close($process);
}

$text が解析したい文章、$result が解析結果。