Phar アーカイブの使用法: 導入Phar アーカイブは Java の JAR アーカイブと似た概念のものですが、 PHP アプリケーションで使用する際に必要な機能をより柔軟に使用できるよう改良しています。 Phar アーカイブを使用すると、PHP アプリケーションやライブラリを ひとつのファイルにまとめて配布できるようになります。 Phar アーカイブ形式のアプリケーションは、その他の PHP アプリケーションとまったく同様に扱えます。 php coolapplication.phar Phar アーカイブ形式のライブラリを使用する方法も、 その他の通常の PHP ライブラリとまったく同じです。
<?php
<?php Phar クラスでは、 ファイルへのアクセスや phar アーカイブ作成用により高度な機能も実装しています。 Phar クラスについての説明は こちら をご覧ください。
<?php さらに、phar ファイルの中身の検証を行うこともできます。対称型ハッシュアルゴリズム (MD5、SHA1、SHA256、そしてもし ext/hash が有効ならさらに SHA512) のいずれか、 あるいは OpenSSL を使用した非対称公開鍵/秘密鍵ペアによる署名のいずれかを使用します。 OpenSSL による署名を使用するには、 まず公開鍵/秘密鍵のペアを作成し、秘密鍵を使用して Phar::setSignatureAlgorithm で署名を行います。 公開キーによる展開はこのようなコードで行います。
<?php /path/to/my.phar の場合は公開鍵を
/path/to/my.phar.pubkey としなければなりません。
そうしないと、OpenSSL 署名の検証ができなくなります。
Phar には 3 つのstaticメソッド Phar::webPhar、 Phar::mungServer そして Phar::interceptFileFuncs が追加されました。これは、通常のファイルシステム用あるいはウェブアプリケーション用の PHP アプリケーションのパッケージを作成する際に重要となります。 Phar::webPhar は、HTTP のコールを phar アーカイブ内の特定の場所に転送するフロントコントローラを実装します。 Phar::mungServer は $_SERVER 配列の中身をうまく変更して アプリケーションでその値を使えるようにします。 Phar::interceptFileFuncs は、 fopen や file_get_contents、opendir そしてすべての stat 系関数 (file_exists、is_readable など) のコールを Phar が横取りして、相対パスを phar アーカイブ内の適切な位置に変換するようにします。
たとえば、あの有名な phpMyAdmin を phar アーカイブにすることを考えてみましょう。
必要なのは、こんな単純なスクリプトだけです。あとは、
ユーザー名とパスワードを変更してウェブサーバー上から
<?php |