AlpineでPECL

Drupalにはサーバーの情報をまとめて見せてくれる「サイトの状態」というページがあります。Drupalを構成している本体、Webサーバー、PHP、DBのバージョンなどを表示するだけでなく、それぞれのモジュールの更新状況や、必要な場合には更新のためのリンクも表示してくれるので、サーバーアプリを最新の状態に保つにはとても便利な機能です。

この一覧の中に「アップロード進捗状況」という項目があり、Drupal や PHPスクリプトでファイルのアップロードを行うときに、進捗状況を表示出来るかどうかがわかります。デフォルトではここは、PECLのuploadprogress モジュールを導入することをおすすめします、的な表示なっていると思います。

これはPHPのモジュールで、Drupalが表示してくれるリンクはたいへんありがたいことに、本家本元のサイトなので、ソース持ってきて自分でコンパイルして導入してねという、ちょっぴり敷居の高いものです。PECL uploadprogress で検索しても、CentOS や Ubuntu(Debian) の情報は多く見付かりますが、独自の管理パッケージを使う AlpineLinux では使えない方法です。

とはいえPECLライブラリはメジャーなので、Alpine でパッケージが用意されていないとは考えにくく、探しているとどうやら php7-pear にまとまっていることが分かりました。uploadprogress は PEAR 経由で入れることになります。

# apk add php7-pear php7-dev

PECL のモジュール導入にJITが必要らしいので、php7-dev も必要になります。以上の2つを導入したら

# pecl7 install uploadprogress

でモジュールの導入が出来ます。uploadprogress は PHP extention なので php.ini に修正が必要になりますが、Alpine のデフォルトなら直接編集せずに、/etc/php7/conf.d/ にモジュールごとのファイルを置く仕組みを取ります。上記の場所に 01_uploadprogress.ini (名前は後で分かるようにお好きに)という中身が

extension=uploadprogress.so

とだけ書かれたファイルを用意して、PHP をリロードすればモジュールが有効になります。これがあると大きなファイルをアップロードするような場合に、進捗が分かるのでエラーが発生した場合などに問題の切り分けがやりやすくなります。

というくらいのメリットしか思い付きませんが、使えるものは有効にしておくのもよいかなと思います。他のディストリビューションだと php7-uploadprogress なんて感じにパッケージが別になってたりするのですが、その辺が Alpine らしいというかなんというか、有るんだけど見つけにくい。

逆引き辞典的なものが欲しくなります。