[PhpSpreadsheet]PHPのバージョンに合わせてアップグレード or ダウングレードする
PhpSpreadsheetをPHPのバージョンに合わせてアップグレード or ダウングレードする手順の覚書き
前提条件
- PHPをインストール済であること
- 必要なモジュール(ext-gd, ext-zipなど)をインストール済であること
- PHPのバージョン: 7.2.34以上(以下の手順の場合、サポート切れバージョンな点はご了承を)
手順
1. Composerのインストール
PhpSpreadSheetのライブラリ用のディレクトリを作成し、インストールします
# PhpSpreadsheetのライブラリ用のディレクトリを作成し、そこにインストール
$ mkdir phpspreadsheet && cd phpspreadsheet
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
2. ライブラリのインストール
PhpSpreadsheetのライブラリをインストールします
PHPのバージョンとしては古いですが、今回は7.1.14に対応したものを入れます。
# composer.jsonの作成と追記
vi composer.json
# -- 以下の内容を追記: PHP7.1.15環境で実行する場合
{
"config": {
"platform": {
"php": "7.1.15"
}
}
}
# -- 追記内容この上まで
# PhpSpreadsheettのダウンロード&インストール
php composer.phar require phpoffice/phpspreadsheet
# 完了すると、PhpSpreadsheetのバージョンが指定したPHPのバージョンに対応した内容に指定されます(※1)
# パッケージのバージョン確認
$ php composer.phar show
# 以下実際の出力結果
markbaker/complex 1.5.0 PHP Class for working with complex numbers
markbaker/matrix 1.2.3 PHP Class for working with matrices
phpoffice/phpspreadsheet 1.12.0 PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine
psr/simple-cache 1.0.1 Common interfaces for simple caching
※1: PhpSpreadsheetダウンロード&インストール完了後のcomposer.json
{
"config": {
"platform": {
"php": "7.1.15"
}
},
"require": {
"phpoffice/phpspreadsheet": "^1.12"
}
}
→ 指定したPHPで使える最新のリリース番号が指定されている(PHP7.1系は1.13でサポート外になるので、その手前の1.12まで)
3. ライブラリのアップグレード
今回はPhpSpreadsheetをアップグレードして、PHP.7.2.34で使えるようにします
手順的には、ダウングレードでも同じです
# composer.jsonの内容を変更
vi composer.json
# -- 以下の内容に変更: PHP7.2.34での実行用に変更、requireセクションは削除
{
"config": {
"platform": {
"php": "7.2.34"
}
}
}
# -- 変更内容この上まで
# composer.jsonに記載の内容をもとに、依存性とcomposer.lockの内容を更新(※2)
php composer.phar upgrade
# PhpSpreadsheetのダウンロード&インストール
php composer.phar require phpoffice/phpspreadsheet
# 完了すると、PhpSpreadsheetのバージョンが指定したPHPのバージョンに対応した内容に指定されます(※3)
# パッケージのバージョン確認
$ php composer.phar show
# 以下実際の出力結果
ezyang/htmlpurifier v4.14.0 Standards compliant HTML filter written in PHP
maennchen/zipstream-php 2.1.0 ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the dis...
markbaker/complex 3.0.1 PHP Class for working with complex numbers
markbaker/matrix 3.0.0 PHP Class for working with matrices
myclabs/php-enum 1.7.7 PHP Enum implementation
phpoffice/phpspreadsheet 1.19.0 PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine
psr/http-client 1.0.1 Common interface for HTTP clients
psr/http-factory 1.0.1 Common interfaces for PSR-7 HTTP message factories
psr/http-message 1.0.1 Common interface for HTTP messages
psr/simple-cache 1.0.1 Common interfaces for simple caching
symfony/polyfill-mbstring v1.26.0 Symfony polyfill for the Mbstring extension
※2: composerコマンド実行時にエラーが出た場合は手順1の方法で再度インストールするか、以下のコマンドで更新してください
# バージョンを指定して更新(以下は2.2)
php composer.phar self-update --2.2
# 最新の安定版に更新
php composer.phar self-update --stable
# 元に戻したいとき
php composer.phar self-update --rollback
※3: PhpSpreadsheetダウンロード&インストール完了後のcomposer.json
{
"config": {
"platform": {
"php": "7.2.34"
}
},
"require": {
"phpoffice/phpspreadsheet": "^1.19"
}
}
→ 指定したPHPで使える最新のリリース番号が指定されている(PHP7.2系は1.20でサポート外になるので、その手前の1.19まで)
補足事項
composer.jsonでのPHPのバージョン指定は、以下のコマンドでも可能ですが、ファイルにあらかじめ、{}を記載しておかないとエラーになるので要注意です。
composer config platform.php 7.2.34
以下の通り、{}を記載しておかないとエラーになる
{
}
終わりに
PhpSpreadsheetは、現状PHP7.4以降をサポートしている模様(2022年9月現在)
とはいえ、composerでPHPのバージョンを指定してあげれば対応するリリース番号のものをひっぱってきてくれるので、それ以前のバージョンでも開発はできそうです
※README上はPHP7.3までサポート、となってますが、以下によればPHP7.3のサポートは2022年7月6日(PHP7.3.33のサポート期限2021年12月6日の6ヶ月後)までのようです
Discussion