Apache 2.2.15 → 2.4.25 PHP 5.6 → 7 へアップデート on CentOS 6.9
概要
PHP5 利用していますか?
PHP5.6 のセキュリティサポート期限は 31 Dec 2018
迄
※ Supported Versions 参考
Apache/PHP アップデート、腰が重かったのですが
個人契約サーバなら誰にも迷惑かけないしいいか ♪
ということで
放置気味にされた Apache2.2.15/PHP5.6 の個人のサーバを
アップデートすべく実施した内容をまとめました。
三行まとめ
- SoftwareCollection を利用し現存 Apache/PHP を残したまま、アップデート版を共存させ切り替え。のち古い Apache/PHP 削除
- 必要モジュール (MySQLi, PHPRedis)インストール
- PHP 7 で廃止された PHP5.6 機能やシンタックスを修正
SoftwareCollection とは?

公式サイト によると
以下の様に説明されています。
英語
Software Collections give you the power to build, install, and use multiple versions of software on the same system, without affecting system-wide installed packages.
日本語
ソフトウェアコレクションは、システム全体でインストールされたパッケージに影響を与えることなく、同じシステム上に複数のバージョンのソフトウェアを構築、インストール、使用する能力を提供します。
同じシステム上に複数バージョンのソフトウェアをインストールできる様になる、
ということです。
SoftwareCollection インストール
1 | $ sudo yum install centos-release-scl |
httpd24 関連のモジュールインストール
1 | $ sudo yum-config-manager --enable rhel-server-rhscl-6-rpms |
1 | $ httpd -v |
RHSCL リポジトリ利用可設定
1 | $ sudo yum-config-manager --enable rhel-server-rhscl-7-rpms |
php7 関連モジュールをインストール
1 | # yum install -y scl-utils |
mysqli インストール
1 | # yum --enablerepo=remi-php70 install php-mysqli |
PHP7 用 phpredis インストール
1 | # cd /usr/local/src |
php-fpm 再起動
1 | # /etc/init.d/php70-php-fpm restart |
httpd 再起動
1 | # /etc/init.d/httpd24-httpd restart |
ここまでで PHP7 で動作する環境が整っているかと思います。
エラーログを見ながら修正に当たってください。
PHP 7 で廃止された構文を修正
PHP Parse error: syntax error, unexpected ‘new’ (T_NEW)
&= new <クラス名>
の指定が不可となり、= new <クラス名>
にする必要があります。
1 | &= new Class |
PHP Fatal error: Cannot use ‘String’ as class name as it is reserved
- PHP7 では class String, Int と型名の Class を作成できなくなりました。
自分は以下の様に修正しました。
※ 適宜プロジェクトのコーディングルールに則ってご変更ください。
1 | class String { |
1 | class Int { |
プロジェクトによってはもっと色々出てくると思いますので
適宜修正ください。
総評
放置されがちになるミドルウェアのアップデートは小まめにやっておきたいですね。
脆弱性の定期的な棚卸しせねば
業務でアップデートするのであれば
アップデートする環境を別途用意してアップデートする、
そこでミドルウェア、アプリケーションのコードレベルでのアップデート手順をまとめ
本番環境で実施。
機能(url)毎に正しく動いたものだけプロキシで PHP7 へ流す
というのもアリかなと思います。
以上です。