php5.6からphp7へ移行した
2016年01月01日 14時40分
年も明けたのでこのサーバ(CentOS7)のphpを5.6から7に移行しました。
評判通り体感できるレベルで高速化された。
バージョンあげるだけで速度が改善されるなんてありがたい。
その際の作業メモ。
インストール手順
1 2 3 4 5 6 |
# php5.6のアンインストール sudo yum remove php* # remi リポジトリは追加済み sudo yum install --enablerepo=epel,remi,remi-php70 php php-cli php-devel php-mbstring php-pecl php-xml php-json php-imagick # http server 再起動 systemctl restart httpd |
Laravel4製のアンテナサイトは全くのノントラブル、piwik、mediawikiも問題なし。
ただWordpressが画面真っ白になってしまったので調査開始。
トラブル.1 SSH2ライブラリがyum経由でインストールできない
yumでssh2エクステンションをインストールしようとするとエラーが発生してインストールできない。
ssh2エクステンションはWordpressのアップデートで使用している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
sudo yum install --enablerepo=epel,remi,remi-php70 php-ssh2 --> Finished Dependency Resolution Error: Package: php-pecl-ssh2-0.12-3.el7.remi.5.4.x86_64 (remi) Requires: php(api) = 20100412-64 Installed: php-common-7.0.1-1.el7.remi.x86_64 (@remi-php70) php(api) = 20151012-64 Available: php-common-5.4.16-36.el7_1.x86_64 (base) php(api) = 20100412-64 Available: php-common-5.4.45-1.el7.remi.x86_64 (remi) php(api) = 20100412-64 Available: php-common-5.4.45-2.el7.remi.x86_64 (remi) php(api) = 20100412-64 Available: php-common-7.0.0-1.el7.remi.x86_64 (remi-php70) php(api) = 20151012-64 Error: Package: php-pecl-ssh2-0.12-3.el7.remi.5.4.x86_64 (remi) Requires: php(zend-abi) = 20100525-64 Installed: php-common-7.0.1-1.el7.remi.x86_64 (@remi-php70) php(zend-abi) = 20151012-64 Available: php-common-5.4.16-36.el7_1.x86_64 (base) php(zend-abi) = 20100525-64 Available: php-common-5.4.45-1.el7.remi.x86_64 (remi) php(zend-abi) = 20100525-64 Available: php-common-5.4.45-2.el7.remi.x86_64 (remi) php(zend-abi) = 20100525-64 Available: php-common-7.0.0-1.el7.remi.x86_64 (remi-php70) php(zend-abi) = 20151012-64 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest |
しょうがないからソースからコンパイルしてインストール。
1 2 3 4 5 6 7 8 9 |
wget https://github.com/Sean-Der/pecl-networking-ssh2/archive/php7.zip unzip php7.zip cd pecl-networking-ssh2-php7 phpize ./configure make make install echo "extension = ssh2.so" > /etc/php.d/ssh2.ini systemctl restart httpd.service |
無事、認識した。
トラブル.2 プラグインがphp7対応できていない
ログを確認してみるとplugins/以下のファイルでsplitとかeregiなどが使われていてエラーになっていた。
消しても問題無さそうなプラグインだったので削除して回避。
発生したトラブルはこれだけだった。
本体は全く問題なく動いている。
7.0移行用のチェッカーを使うとソース側の問題は先に潰すことができる。
PHP 7 Compatibility Checker(php7cc)
https://github.com/sstalle/php7cc