phpのバージョンアップ 4.4 から 5.6 まで一気に駆け上がってみた件
過日、wordpressに移転したことを何度もお伝えしてきましたが
その際に、必須だったphpのバージョンアップも行いました。
具体的には、4.4 から 5.6 まで一気に駆け上がりました。
おすすめ:php7へのバージョンアップ記事
そう、なんと2019年1月までphp4系を使ってたんですよ。
ありえないでしょ。自分でもそう思いますから。
ただただ面倒くさかった。理由はそれだけ。
でもどうしてもブログをwordpressに移転したくて。
重い重い腰をあげて、phpのバージョンアップへ。
なぜ腰が重いかというと、そりゃあ一つしかありません。
phpのバージョンを上げると、プログラムに影響がでるから。
僕が自作した適当なプログラムを、
ブログ表示の一部や、プライベートなツールとして
日常的に運用しているものが動かなくなるため、です。
当ブログは、さくらインターネットで運用していますが、
さくらインターネットでは、
2019年1月現在では、以下のphpバージョンへの切り替えが可能になっています。
– PHP 7.2
– PHP 5.6(2018/12 サポート終了予定)【ここまで駆け上がった】
– PHP 5.4(サポート終了)
– PHP 5.3(サポート終了)
– PHP 5.2(サポート終了)
– PHP 4.4(サポート終了)【ここから】
バージョンアップに際しては、
4.4~5.6にいたるまで、段階的にバージョンをあげてゆき、
phpプログラムの動作確認をしていきました。
サーバ移転の際は、とにかく時間との戦いで、
まとめる時間もなく、とりあえず、動くようにプログラムを修正していきました。
今日はそのときを思い出して、
バージョンアップのときに、必要だった修正なんかを
おぼえてる範囲で思い出しながら、メモがてら書いておきます。
詳しく書く気力がないので、
対応した内容と、ざっぱな解説メモだけのこしておき、
気が向いたら詳細を書き加えるようにします。
php4.4から5.2へのバージョンアップの際に対応した内容
修正ファイル:php.ini
対応内容:以下を追記
allow_url_include = ON
default_charset = SJIS
おおざっぱな解説:
php5から、allow_url_includeをオンにしないと、
外部URLからコンテンツをとってこれなくなったので、オンにする内容を追記。
default_charsetで、デフォルト文字コードの設定がないとダメになったよう。
php5.2から5.3へのバージョンアップの際に対応した内容
修正ファイル:php.ini
対応内容:以下を追記
date.timezone = “Asia/Tokyo"
おおざっぱな解説:
デフォルトタイムゾーンの設定が必要になったらしい。
php5.3 から5.4(5.6)へのバージョンアップの際に対応した内容
修正ファイル:自作のphpプログラムファイル
対応内容:以下をコメントアウト
//$message = stripslashes($message);
おおざっぱな解説:
関連するワードは マジッククオート 5C問題。
マジッククオートとは、PHP スクリプトに入力されるデータを
自動的にエスケープするphpの機能であり、歴史的にこれまでは使われてきたが、
php5.4で廃止されることになった。移植性などの理由から。
マジッククオート機能は便利であるが、
意図せずエスケープされる場合に手動でエスケープを戻すために
stripslashes関数を使っていた。
だが、マジッククオート機能が廃止になったため、
stripslashes関数は不要になったのだが、処理はそのまま残っていたので
phpバージョンアップ後、ぼくのプログラムで、
フォーム送信した日本語で、5C問題に絡む 申 や ソ といった
特定の文字のみ文字化けするようになった。
なので、stripslashesの処理をしていた行をコメントアウトした。
。。。こんなところです。
あとがき
php7まで行こうと思ったのですが、
5.6へのバージョンアップ修正で力尽きたところです。
いつまでも php4を残しておいてくださる、
さくらインターネットさんには感謝しかなかったのですが、
とりあえず、5の最新版までは上がれたので、
とりあえず一息、あんしんしています。
7へのバージョンアップも、必要に迫られないと
やらんでしょうね(笑)
いじょう。
追記:php7へバージョンアップしました。
そしたら劇的にパフォーマンス改善しました!