株式会社ITコア  株式会社ITコア  トップ  会社概要  求人・採用  お問い合わせ・ご相談  個人情報保護方針

PHP8移植サービス by itcore


サービス概要 一部プログラム移植 移植プロセス お奨めプラットフォーム PHPバージョン推移 サポート期限 バージョン非互換

サービス概要 先頭


PHP5などの古いPHPアプリケーションを最新のPHP8に移植します。
プラットフォームもAWSに移設が可能です。
2022年の特典として、一部プログラム移植による動作保証と詳細な見積もり提示を無償でご提供します。
お問い合わせはこちらへ
※作業は全てリモートを条件といたします。オンラインミーティングは可能です。

一部プログラム移植 先頭


例えば、ログイン、TOP、検索、登録などの画面を実際にPHP8に移植することで、
技術的な実現可能性、難易度、作業工数などを検証します。

移植プロセス 先頭


移植プロセスは次の工程で行います。
1.PHP8環境構築
2.一部プログラム移植
3.見積もり提示
4.テスト仕様書作成
5.プログラム移植&テスト
6.本番システム入れ替え

■リスク管理
5と6の工程を一定のユニット単位(標準50万円)に分割し、スパイラル的に実施します。
ユニット単位で検証を行っていただき、ボタンの掛け違いがおきないようにします。
■コスト削減
現在使用していない機能をなくすことで、移植コストを削減することができます。
軽微な不具合修正は社内人材の余剰リソースで対応するというアプローチも効果的です。(レクチャーやサポートも可能です)

お奨めプラットフォーム 先頭


AWSインフラクラウドサービスのデファクトスタンダード
LaravelPHPフレームワークのデファクトスタンダード
githubソース管理のデファクトスタンダード
VSCodeテキストエディタのデファクトスタンダード

PHPバージョン推移 先頭


PHPはWeb専用の言語として生まれ、日本でもPHP3の頃から普及し始めました。
php4では機能や性能も向上し、yahooや楽天市場が採用するなどして、Webシステムに広く普及しました。
SIベンダーは重厚で堅牢なJavaを用いることが多いですが、
軽量で生産性の高いPHPは消費者向けのWebサービスとして現在も多く活用されています。
ユニコード対応のPHP6の開発がつまづき、一時期PHPの勢いが衰えたこともありましたが、
SNSアプリや掲載ゲームが流行ったことでPHPの勢いが復活し、PHP5のシステムが多く開発されました。
その後、PHP7を経て現在はPHP8が最新のバージョンとなっています。
PHP5は既にサポート切れになっているのですが、
コストや技術の問題でPHP5のまま稼働しているシステムが少なくありません。
PHP5のままでは以下のような問題があります。

■問題点
1.セキュリティのリスクが高い
2.新しい機能が使えない
3.新しいプラットフォームで動かない

PHPサポート期限 先頭


バージョン最新初回リリース日セキュリティ
サポート期限
88.12020-11-262024-11-25
77.42015-12-032022-11-28
55.62004-07-132018-12-31
44.42000-05-222008-08-07
33.01998-06-062000-10-20

バージョン非互換 先頭


  1. 配列リテラルを用いてクラスのプロパティに配列を設定した場合、配列のキーが上書きされない
  2. json_decode() が、より厳格に
  3. ストリームラッパーが、SSL/TLS を使っている場合のピア証明書とホスト名の検証にデフォルトで対応
  4. GMP リソースがオブジェクトに
  5. Mcrypt 関数は、有効なキーと IV を要求する
  6. cURL でのファイルアップロード
  7. エラーや例外の取り扱いの変更
  8. 変数の取り扱いの変更
  9. foreach の変更
  10. int の取り扱いの変更
  11. 文字列の取り扱いの変更
  12. 削除された関数
  13. 削除された INI 項目
  14. 下位互換性のないその他の変更
  15. 関数に渡す引数が少ない場合の挙動
  16. スコープを調べる関数の動的呼び出しの禁止
  17. クラス、インターフェイス、トレイトに使えない名前
  18. 数値形式文字列の変換が科学記法に対応
  19. mt_rand() のアルゴリズムの修正
  20. rand() と srand() が、 それぞれ mt_rand() と mt_srand() のエイリアスとなる ¶
  21. ASCII 制御文字 delete は識別子として使えない
  22. error_log に syslog を指定した場合の変更
  23. 未完成のオブジェクトのデストラクタは呼び出されない
  24. 参照渡しの引数の call_user_func() での扱い
  25. 文字列における空のインデックス演算子はサポートしない
  26. 空文字列に対して、文字列インデックス経由で値を設定する操作
  27. 削除された INI 項目
  28. 参照による代入で自動的に作られる配列の要素の並び順の変更
  29. 同値な要素の並び順
  30. E_RECOVERABLE エラーのエラーメッセージ
  31. unserialize() 関数の $options パラメータ
  32. DateTime クラスのコンストラクタに、マイクロ秒も組み込まれる
  33. 致命的なエラーが Error 例外に変換される
  34. 字句的に束縛される変数は、名前を再利用できない
  35. long2ip() のパラメータタイプの変更
  36. JSON のエンコードとデコード
  37. mb_ereg() および mb_eregi() 関数の引数のセマンティクスの変更
  38. sslv2 ストリームのサポートの削除
  39. 戻り値の型が決まっている関数で "return;" と書いてもコンパイルエラーになる
  40. number_format() は負のゼロを返さない
  41. オブジェクトと配列の型変換における数値キーの扱い
  42. get_class() に null を渡せない
  43. countable ではない型をカウントしたときの警告
  44. ext/hash がリソースからオブジェクトへ
  45. SSL/TLS のデフォルトの改善
  46. gettype() にクローズ済みのリソースを渡した際の戻り値
  47. is_object() と __PHP_Incomplete_Class
  48. 定義されていない定数のエラーレベル変更
  49. Windows サポート
  50. trait のプロパティの値チェック
  51. object をクラス名に使う
  52. NetWare サポート
  53. array_unique() 関数を SORT_STRING と使う場合
  54. bcmod() の小数点に対する挙動変更
  55. ハッシュ関数と非暗号化ハッシュ
  56. json_decode() 関数のオプション
  57. rand() と mt_rand() の出力
  58. sql.safe_mode のini設定削除
  59. date_parse() と date_parse_from_format() 関数への変更
  60. 外部から入力されるCookie
  61. ヒアドキュメント/Nowdoc の終了ラベルの解釈
  62. switch の制御フローを変更する continue 文は警告が出る
  63. ArrayAccess を実装したオブジェクトに対する、 数値形式の文字列キーの解釈が厳密に
  64. static なプロパティが参照の代入によって分裂しなくなっ
  65. 配列から返される参照とプロパティのアクセスは、即座に分割される
  66. Traversable への引数のアンパックを整数でないキーで行うことはサポートされない
  67. その他雑多な変更
  68. BCMath
  69. IMAP, POP3 および NNTP
  70. マルチバイト文字
  71. MySQL 改良版拡張モジュール
  72. MySQL関数 (PDO_MYSQL)
  73. リフレクション
  74. Standard PHP Library (SPL)
  75. SimpleXML
  76. 外部から入力されるCookie
  77. 配列でない値を配列スタイルでアクセスした場合
  78. get_declared_classes() 関数
  79. fn キーワー
  80. ファイルの最後の <?php タグ
  81. ストリームラッパー
  82. シリアル化
  83. パスワードアルゴリズムの定数
  84. htmlentities() 関数
  85. fread() および fwrite() 関数
  86. BCMath
  87. CURL
  88. 日付と時刻
  89. Intl
  90. MySQLi
  91. OpenSSL
  92. Regular Expressions (Perl互換)
  93. PDO
  94. リフレクション
  95. Standard PHP Library (SPL)
  96. Tokenizer
  97. 外部から入力されるCookie
  98. 文字列と数値の比較
  99. その他の下位互換性のない変更
  100. リソースからオブジェクトへの移行
  101. COM および .Net (Windows)
  102. CURL
  103. 日付と時刻
  104. DOM
  105. Enchant
  106. Exif
  107. フィルタ
  108. GD
  109. GMP
  110. Iconv
  111. IMAP
  112. 国際化関数
  113. LDAP
  114. マルチバイト文字列
  115. OCI8
  116. ODBC
  117. OpenSSL
  118. 正規表現 (Perl互換)
  119. PHP Data Objects
  120. PDO ODBC
  121. PDO MySQL
  122. PostgreSQL
  123. Phar
  124. リフレクション
  125. Sockets
  126. Standard PHP Library (SPL)
  127. 標準ライブラリ
  128. Sysvsem
  129. Tidy
  130. Tokenizer
  131. XMLReader
  132. XML-RPC
  133. Zip
  134. Zlib
  135. Windows の PHP Test Packs
  136. $GLOBALS へのアクセス制限
  137. リソースからオブジェクトへの移行
  138. MySQLi
  139. MySQLnd
  140. OpenSSL
  141. PHP Data Objects(PDO)
  142. MySQL ドライバ
  143. SQLite ドライバ
  144. Phar
  145. Standard
  146. Standard PHP Library (SPL)
先頭
ITCORE 2022