【ざっくりとした備忘録】Ubuntu PHP7.2 をインストールしたらうまく動かなかったので修正した件

Ubuntu16.04 のパッケージを PHP7.0から PHP7.2にアップグレードしてみた。


①PHP7.2 をインストール
 $ sudo apt-get install software-properties-common
 $ sudo add-apt-repository ppa:ondrej/php
 $ sudo apt-get update
 $ sudo apt-get install php7.2
 $ sudo apt-get install php7.2-mbstring php7.2-mysql php7.2-xml php7.2-gd php7.2-zip php7.2-cgi php7.2-fpm php7.2-readline php7.2-json php7.2-common php7.2-cli
※モジュールは必要なものだけでOK
※mcrypt は PHP7.2から非推奨となったため標準ではモジュールが用意されていない


②PHP7.0 と 7.2 のバージョンを切り替える

 update-alternatives コマンドで、バージョンを切り替え設定する。
$ update-alternatives --list php
 /usr/bin/php7.0
 /usr/bin/php7.2

$ update-alternatives --display php
php - 自動モード
 最適なリンクのバージョンは '/usr/bin/php7.2' です
 リンクは現在 /usr/bin/php7.2 を指しています
 リンク php は /usr/bin/php です
 スレーブ php.1.gz は /usr/share/man/man1/php.1.gz です
 /usr/bin/php7.0 - 優先度 70
  スレーブ php.1.gz: /usr/share/man/man1/php7.0.1.gz
 /usr/bin/php7.2 - 優先度 72
  スレーブ php.1.gz: /usr/share/man/man1/php7.2.1.gz

--config オプションを使う
$ update-alternatives --config php
 alternative php (/usr/bin/php を提供) には 2 個の選択肢があります。
 選択肢 パス 優先度 状態
 ------------------------------------------------------------
 * 0 /usr/bin/php7.2 72 自動モード
 1 /usr/bin/php7.0 70 手動モード
 2 /usr/bin/php7.2 72 手動モード
 現在の選択 [*] を保持するには 、さもなければ選択肢の番号のキーを押してください: 1
 update-alternatives: /usr/bin/php (php) を提供するためにマニュアルモードで /usr/bin/php7.0 を使います


③Apache2 の設定、モジュールを有効化、旧バージョンを無効化
a2enconf php7.2-cgi
a2enconf php7.2-fpm
a2disconf php7.0-cgi
a2disconf php7.0-fpm
a2enmod php7.2
a2dismod php7.0


④fpmの設定を確認、書き換える
 /etc/php/7.2/fpm/pool.d/www.conf の
 listen = /run/php/php7.2-fpm.sock をコメントアウトし、行を追加
;listen = /run/php/php7.2-fpm.sock
listen = 127.0.0.1:9000

※これを確認しておかないと、以下のようなエラーが apache2のエラーログに記録される
[proxy:error] [pid xxxx] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9000 (*) failed
[proxy_fcgi:error] [pid xxxx] [client xxx.xxx.xxx.xxx:xxxxx] AH01079: failed to make connection to backend: 127.0.0.1


⑤apache2 を再起動し、動作を確認する
$ sudo service apache2 restart