2016.01.21
【サーバー】PHP7へアップデート
PHP7へのアップデートは注意したほうがいい。
サーバーでちょっとしたアプリのテストをしてみようとしたのだが
一部の関数で定義なしで実行ができなかった。
なのでそろそろPHPをアップデードしないと行けない気がしてきた。
現状のPHP5.3.4からPHP7.0.2への大幅なアップデートをしてみたいと思います。
まず重要なconfigureに対するオプションですが
phpがconfigureのオプションを保存してくれているみたいなので
それをまるまるコピーしてベースとする。
そこから、オプションが使えないものをチェックして整頓していく。
そしたらいろいろと使えないものが出てくるわけです。
"enable-magic-quotes"と"enable-zend-multibyte"は削除されたみたい。
"with-mysql"は存在自体がなくなっている。
とりあえず、なくなったものをすべて削除した上でコンパイルしてインストールする。
この先問題がいろいろとありますがPHPの作り方はこれでいいみたいです。
インストールが終わってApacheを再起動して確認だと思うわけですが
なかなかそうもさせてくれないわけです。
素直にApacheを再起動すると起動出来ないはずです。
ちゃんとconfigureを設定するとhttpd.confの中に自動的にPHP7が有効にする
処理を自動で追加してくれるわけです。
以前からあるPHP5の設定と、今回追加したPHP7の設定が共存するhttpd.confが誕生して
PHP5側の設定で落ちる。
なのでPHP5のLoadModuleを削除してPHP7のLoadModuleがされていることを確認して再起動をする。
そうするとApacheが起動してくれる感じになるかと思います。
ここまで来るとphpinfo()は実行出来ていると思います。
ではWordpressが動くかというとそうは簡単には行かせてくれない。
環境にもよるけどプラグインがPHP7に対応していないパターンがいくつもある。
大抵はPHP7から非推奨から削除になったものを使っているパターンが多い。
Link:PHP: mysql_real_escape_string - Manual
Link:PHP: split - Manual
削除なので完全にエラーになるのでソースを修正しないといけない。
それ以外にも関数の挙動が変わるものもある。
Link:PHP: preg_replace - Manual
クラス定義の方法も以前までは許されていたものが例外として
処理されるようになるので動かないソースになってしまう。
Link:PHP: PHP 7.0.x で推奨されなくなる機能 - Manual
そういうものをすべて調整してどうにか見た目的には問題なく動いて見れる形まで
持ってくることができました。
xdebugはインストールしておきたいのだが、pecl経由でインストールしようとすると
configureは問題なさそうなのだがコンパイルでエラーになる。
エラーらしきものが出ていないので手詰まり。
よく調べてみるとxdebugはphp7にまだ対応していないとのこと。
Link:0001147: Unable to compile for php7-dev - MantisBT
ということはまだ正式リリース前の最新版であればインストールできるんじゃねということで
公式ページよりpeclに上がっていない 2.4.0RC3 を引っ張ってきてソースからコンパイル。
Link:Xdebug - Debugger and Profiler Tool for PHP
問題なくコンパイルできある程度動いているみたいなので現状はこのままおいておくことにする。
とりあえず、インストールログをおいておく。
$ phpize $ ./configure --enable-xdebug $ make # make install
大変そうに書いてはいるけどWordpressのプラグインの不具合を除けば
素直なインストールな流れにだったかと思います。
そんな感じでPHP7からは大幅変更があるので
あっさりとアップデートをするのは要注意だと思います。
関連記事