PHPExcelをPhar化して利用

PHPでExcelファイルを読み書きできるライブラリ PHPExcel はもう更新停止してるけど、数年前くらいのPHP5環境でちょろっとExcelを読み書きしたい時などにはまだまだ有用です。そのままだとけっこうファイルが多くて、単純にはそれをそのまま本番サーバーにも置いて使いますが、PHPExcel自体のソースコードを読むこともなく使うだけなら、phar ファイル1つにまとめるとすっきりします。

環境

  • PHP 5.3
  • CentOS 6.10

PHPExcelダウンロード展開

PHPOffice/PHPExcel Release から最新版をダウンロードして展開。
展開してできたフォルダ内の Classes フォルダで作業します。
そこにある PHPExcel フォルダと PHPExcel.php ファイルを phar ファイル1つにまとめます。

php.iniでPhar作成許可

phar.readonly = 0
phar.require_hash = 0

box2 インストール

box3 ではなく box2 を使います。

$ curl -LSs https://box-project.github.io/box2/installer.php | php

box.json作成

{
  "directories": ["PHPExcel"],
  "main": "PHPExcel.php",
  "output": "PHPExcel.phar",
  "compression": "GZ",
  "chmod": "0755",
  "stub": true
}

phar生成

$ ./box.phar build

PHPExcel.phar ファイルができます。

利用

phar:// というスキームで phar ファイルを指定し、続けて中のファイル名を書いて require します。

require_once 'phar://PHPExcel.phar/PHPExcel.php';
$book = \PHPExcel_IOFactory::load('book.xlsx');

フルパスでも問題ないようです。

require_once 'phar://'.__DIR__.'/PHPExcel/PHPExcel.phar/PHPExcel.php';

phar ファイル1つだけで使えるようになりました。

あれ・・?
よく見たらGitHubのPHPExcel/Buildってフォルダに、phar作れそうなものが入ってた・・。
phingというツールを使ってるようだ。これ使えばよかったのか・・うーんまあいいか動いてるから。。