読者です 読者をやめる 読者になる 読者になる

PHP 5.3 バージョンアップ対応の記録

最近すっかり完全放置状態の自サービス創作小説投稿コミュニティー - ぱろしょだが、サーバーホスティング元にてソフトウェアの一斉バージョンアップメンテナンスが行われるとのことで、影響確認テストを行った。

  • 最新版のXAMPP導入。PHPApacheのみ使用。MySQLはバージョンアップなしなので、別環境にある既存のMySQLを使用。
  • 本番データのバックアップをMySQLに投入して、各機能打鍵確認
  • (ついで)全ファイルの文字コードと改行コードを再確認し、統一した。従来はFTP時に変換をしていたが、変換忘れたりすると面倒なので。今後はバイナリ転送一本である

現新の環境はまとめるとこんな感じ。

環境 PHP Apache MySQL
現行 5.2.x 1.3 5.1.22
検証環境*1 5.5.11 2.4.9 5.1.73
新環境 5.3.x 2.4.9 5.1.73

検証環境のバージョンがやたら高いが、個別に用意するのが面倒なのと、PHP: PHP 5.4.x における変更点PHP: PHP 5.5.x における変更点を見た感じ、5.3から5.5の間に戻された仕様はなさそうなのでまあいいかと判断。でもさすがにノーチェックは怖いので、無影響確認のつもりで全画面一通り打鍵した。

で、下記のような問題を発見。対処した。

  • ereg系正規表現をpregに変更(ereg系は5.3.0で非推奨。警告出力される)
  • strlen関数に配列が渡された場合の仕様変更(従来は配列が渡ると文字列"Array"が渡されたものとして動作)により、自作関数の挙動に影響が出た。従来の仕様と同じになるようコードを修正
  • PHP開始タグが「<?」であるものを「<?php」に修正

最後のものはPHP 5.3とは関係なくphp.iniの設定の問題だが、個人的にはもとより<?phpで統一していたつもりだっただけに発見したときは驚いた。n年越しの潜在バグというやつだ。動作しているPHPファイルをそのまま食わせただけなのに構文エラーとなり、発見に苦労した。括弧の数があっているか追うために<?でソースを検索していたときに偶然見つけたのだ。いやはや。

これでとりあえずは安心と思っているが、バージョンアップから数日はチェックが必要かな。仕事が立て込んでいるので、何かあったら睡眠時間を削る羽目になる可能性が高い。ホント、ソフトウェアのバージョンアップ問題は頭が痛い。

*1:XAMPP 1.8.3