ラック
Home > ブログ > 記事 > 2016年8月 > 新しいバージョンのPHP環境を用意しましょう、というお話

新しいバージョンのPHP環境を用意しましょう、というお話

カテゴリ: ホームページ, サーバ

概要

昨年末、著名なPHP開発者・Anthony Ferrara(ircmaxell)氏のブログに、PHP Install Statisticsという記事が掲載されました。この記事では、W3Techsの統計を元に、現在Web上に公開されているPHP製サイトのバージョン情報を調べ、いかに多くのPHP製サイトが、脆弱でサポートの切れたバージョンを使用しているか、解説しています。

 

この記事によると、PHP製サイトのおよそ7割強は、脆弱性があるか、又は既にサポートが切れているバージョンのPHPを使用している、としています。記事の冒頭には、他の処理系やアプリケーションとの比較がありますが、PerlとPythonでは安全なバージョンの使用率が8割前後なのに対して、PHPの安全なバージョンの使用率は25%と、非常に悪い数字になっています

安全なPHPを使っていますか? – PHPバージョンアップとの付き合い方を考える : アシアルブログ (2015/01/08)

 

 

PHPの現在の最新系列は「7.0」。「PHP 7.0.9」「5.6.24」、「5.5.38」ではセキュリティに関わるものを含む複数の脆弱性が修正されており、5.6系列、7.0系列のユーザはアップグレードが推奨されている。また、「PHP 5.5.38」はPHP 5.5系列をもってアップデートの提供が終了となることが予定されているため、PHP 5.5系列のユーザは最新系列へのアップグレードの検討を呼びかけている。

びぎねっとITニュース ≫ 「PHP 7.0.9/5.6.24/5.5.38」リリース、PHP 5.5系列はサポート打ち切りへ (2016/07/27)

上記の通り、先月、PHPの5.5のセキュリティサポートが終了しました(参考:PHPのリリース日とサポート期限 – Qiita に拠ると2016/7/10に終了)。

PHPの公式ライフサイクルは3年と比較的短めのため、うかうかしているとすぐに現行バージョンのサポート終了が来てしまいます。

 

 

MODxの開発に携わっている方も…

 

WordPressのテーマ「Habakiri」を開発したパワーユーザさんも、こう仰っています。

 

セキュリティを保つために最新の安定バージョンを使用するに越したことはありません。

 

しかし、現在既にプログラムが稼働している環境のバージョンアップについては慎重にならざるを得ないため、迂闊に行うことができないこともまた事実です。

ここで述べたいことも、「現行サーバのバージョンアップしよう」というものではありません。

「新規として最新環境は用意しておきたい」ということです(いずれは移行しなければなりませんが)。

 

歴史を遡れば、PHPは最初はC言語(最初期はPerl)で記述されたCGIバイナリ群であり、プログラミング言語ではなくツールでした。

それが多くの変遷を経て、こんにち知られるようなプログラミング言語とその処理系へとなりました。

参考

スタート地点がプログラミング言語ではなかったこと、また、プログラミング言語へと変化していく過程で他の言語の特徴を取り入れたことなどからでしょうか。PHPは言語仕様の一貫性に乏しい、と言われることもあります。

これは上の歴史からすればやむを得ない部分もありますが、それもあってか過去に何度か大きな脆弱性が発見されています。

 

中には、当初はCMSの脆弱性とされたものの、実際にはPHPに起因する脆弱性であった、という事例もありました。

 

また、バージョン間で挙動が変わった関数なども存在します。

こうした挙動の変化は、セキュリティを強化したり、使い勝手を良くしたりするために行われたりするものですが、そのせいでプログラムの挙動が変わってしまったり、動かなくなってしまう場合もあります。

また、PHP-5.3以降では、明確に過去の悪い習慣と決別する姿勢を示しているように思えます。昔のイメージだけで「PHPは危険」と言われてしまうのは、ちとかわいそうな気がします。

『例えば、PHPを避ける』以降PHPはどれだけ安全になったか | 徳丸浩の日記

特に5.2→5.3やそれ以降(5.3→5.4、5.4→5.5など)は、PHPの負の遺産ともいうべき部分を切り捨てる動きがそれまでより強まっており、そこでバージョン間の差異によるトラブルに遭遇しやすくなっている、という状況もありそうです。

以前、私自身が経験したものとしては連想配列のアクセスの仕方が変わっていて、テスト環境(5.6)では動作したが、サーバでは動かなかった(5.3.3)、というものもありました。

 

特にPHPに特有して問題となりやすいのは、以下の2点が挙げられると思います。

  • WordPressなど多くのCMSで使用されていることもあり、インターネット上にサンプルコードが山のように存在する。
    しかし、それらの多くはバージョンを記載しておらず、そのままコピペしたり改造しただけでは、自分の環境では動かないという現象に遭遇しやすい
  • PHPのバージョンはサーバ環境に依存するため、上の私の例のように「テスト環境(あるいはサーバA)では動いたが、サーバ環境(あるいはサーバB)では動かない」という、「こっちで動いてあっちで動かない」という現象に遭遇しやすい

このような特徴から、異なるPHPのバージョンをまたいで作業する場面は発生しやすく、それに伴ってトラブルに遭遇しやすい状態にもなります。

その上、開発ツール上などの事前デバッグが難しく、本番環境でいきなり想定外のバグに遭遇する可能性が高いためトラブルになりやすいことも挙げられます。

そこで、PHPのコーディングを行う際には、バージョン間の差異も含めた言語の特徴の知識や、プログラミングの知識・技術が必要になると思います。

これは言うまでもありませんが、WordPressをはじめ、concrete5やMODxといったCMSのカスタマイズでも同様です。

サンプルコードが動かなければ最終的には地力で解決しなければならないからです。

 

こうした場面では、なるべくで新しいバージョンに合わせてコーディングを行いたいものです。

古いバージョンに合わせてコーディングすることで、セキュリティ的に問題がある関数や処理を使わなければならないことが出る可能性があるためです。

加えて、古いバージョンのPHPはパフォーマンスも悪いと言われており、その面においても合わせるのであれば新しいバージョンの方が良いと思われます。

ベンチマークとして、フィボナッチ数の計算をさせた前者の例では、PHP5.3と最新のPHP7とでは実行時間が1/5弱、メモリ使用領域も1/2弱まで削減されています。

 

今や、Webサイトのアクセスの半分以上がスマートフォン経由となり、その画面表示に対応すべくレスポンシブデザインが広く普及してきており、

(中略)

Webページの表示速度と可用性は、快適なユーザ体験を提供するために重要なWebサイトの品質です。欧米においては、表示開始時間0.5秒、表示完了時間が2秒以内と、過去に言われていた3秒ルールよりも速さが求められています

レスポンシブデザイン前提のWordPressの表示速度高速化の考え方 | WordCamp Tokyo 2016

スマホからのWebサイトへのアクセスが非常に増え、PHPを使用するCMSでのサイト構築の需要が増えている現状を鑑みると、セキュリティ的にも、パフォーマンス的にも、PHPの新しいバージョンの環境が求められるのではないでしょうか。

加えて、googleは早ければ今年秋にも、Webサイトの表示スピードをランキングの評価基準に取り入れる(※スマホからの検索結果の場合)かもしれない、と発表しています。

これを踏まえると、Webサイトの表示スピードはSEOにも関わることが分かります。

こうした状況からも、新しいバージョンのPHP環境の需要はますます高まることでしょう。

 

以上より、早く新しいPHPの環境を整えることが望ましいと思われます。

タグ: php

 



関連する記事一覧