Drupal8.5へアップデートとPHP7

2018年9月12日

Alpine Linux 環境に Drupal8 で Blogを構築してあれやこれやテストしているわけですが、Drupal8 も 8.5 へとアップデートされました。けっこう大きな変更がありましたが、前回と同じ方法で問題なくアップデート出来ました。

さてどんな機能変更・追加があったのかと公式サポーティングサイトの「Drupalナビ」さんの記事を読んでいたところ、最後の方で気になる記述が……

 Drupal 8は、2019年3月、今から1年後以降はPHP 7を必要とします。あなたのサイトがPHP5.5 あるいは PHP5.6でホストされている場合は、アップグレードを計画し始めるべきです

おぉっと、今のサイトは最初の構築時にエラーが回避できなくて、PHP5 で構築した経緯があります。最後の5系の PHP5.6 なのですが、これは昨年末、2017年12月31日で開発終了したバージョンです。これは早めに7系に移行しないといけなくなりました。

いま使っている Alpine Linux 3.6 だと PHP7.1 が利用できます。この際なので導入してみました。前回を踏まえて5系と同じパッケージを導入して、nginx の設定で php-fpm7 をソケット接続するように変更、さてどうなりますか……

やはり真っ白画面です。Fatal Error がビシバシ出てる気がします。error.log を見るとセッションモジュールのエラーが。検索すると7系への移行でコアモジュールからいくつかが外部パッケージになっているようです。

php7-session と mbstringも外部になったそうなので、php7-mbstring を追加して、更なるエラーの検証……今度は文字列関数らしきものが見付からないエラー。なるほど、php7-tokenizer が必要なようです。

ここまでの追加導入で Drupal8 はほぼ正常に動作するようになりましたが、レポートから一件のエラーが出ています。「SimpleXML」のモジュールを有効にするようにとありました。追加で php7-simplexml を導入しますと、晴れてエラーがなくなりました。

最終的には以下の追加パッケージを導入しましたが、7系では必要無いものもあるかもしれません。

php7-common
php7
php7-ctype
php7-dom
php7-fpm
php7-ftp
php7-gd
php7-json
php7-opcache
php7-openssl
php7-pdo
php7-pdo_pgsql
php7-pgsql
php7-xml
php7-zlib
php7-mbstring
php7-session
php7-tokenizer
php7-simplexml
php7-phar

今のところこれで問題なく動作しています。また今後の Drupal アップデートで、他にも必要なモジュールが出てくるかもしれません。

動作に関しては5系から速くなった感じは余りしませんが、最低限のリソースしかないので普通なら速く感じるのかもしれません。ひとまず PHP7 にアップデート出来たのでよかったです。

IT,LinuxAlpine Linux,Drupal8,PHP7

Posted by Bsaku