導入:なぜPHPでアーカイブ(Phar)が重要なのか
業務システムにおいて、複数のファイルで構成されるライブラリやツールを配布・管理するのは手間がかかります。特に、依存関係のあるスクリプトを別の環境へ移動させる際、ファイルの一部が漏れるといったミスも起こりがちです。PHPには、JavaのJARファイルのように、アプリケーション全体を1つのファイルに圧縮・実行可能にする「Phar(PHP Archive)」という仕組みが存在します。これを活用することで、デプロイや配布の利便性が飛躍的に向上します。
基礎知識:Pharとは何か
Pharは「PHP Archive」の略称で、PHPのアプリケーションやライブラリを単一のファイルにパッケージングするためのアーカイブ形式です。最大の特徴は、そのファイルをPHPインタープリタで直接実行できる点です。Webサーバ上の設定やCLIツールとして、配布先の環境に依存せずポータブルに動作させることが可能です。
実装・解決策:Pharの作成と実行
Pharを作成するには、まずphp.iniで「phar.readonly」の設定が「Off」になっている必要があります。開発環境で作成し、実行環境では読み取り専用として扱うのが定石です。構築の流れは「ディレクトリ構造の決定」「Pharクラスによるアーカイブ作成」「スタブ(実行時に最初に呼び出されるファイル)の定義」という手順になります。
サンプルプログラム:Pharファイルを作成するツール
以下は、特定のディレクトリ配下のファイルを1つの「app.phar」にまとめる実装例です。
buildFromDirectory(dirname(__FILE__) . ‘/src’);
// スタブ(エントリポイント)の設定
// このファイルが実行された時に、どのファイルから読み込みを開始するかを指定
$phar->setStub($phar->createDefaultStub(‘index.php’));
echo “Pharファイルが生成されました: ” . $pharFile . PHP_EOL;
/
- 使用方法:
- 1. srcディレクトリにプロジェクトを配置
- 2. このスクリプトを実行してapp.pharを作成
- 3. php app.phar で実行可能
/
?>
応用・注意点:現場での運用における心得
1. セキュリティと署名: Pharは署名(OpenSSLなどによる秘密鍵)を付与できます。配布する際は改ざん防止のために署名を必ず行うようにしましょう。
2. readonly設定の罠: 多くの共有レンタルサーバーでは「phar.readonly = On」がデフォルトになっています。この場合、実行は可能ですが、実行時にPharファイル自体を書き換えるような処理(キャッシュ生成など)はエラーになります。環境に合わせて設計を調整してください。
3. Composerとの併用: 現在では、ComposerでビルドしたライブラリをPhar化するツール「Box」を使うのが一般的です。一から自作するよりも、標準的なビルドツールを活用することで、依存関係の解決を含めた堅牢なパッケージングが可能になります。
Pharは単なる圧縮ファイルではなく、PHPアプリケーションの配布における強力な武器です。小規模なCLIツールや、設定ファイルを内包した配布物を作る際にぜひ活用してみてください。