Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Forteeをバージョンアップしてみた

Kanazawa Yuki
November 30, 2019

 Forteeをバージョンアップしてみた

Kanazawa Yuki

November 30, 2019
Tweet

More Decks by Kanazawa Yuki

Other Decks in Programming

Transcript

  1. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Forteeを
    バージョンアップしてみた
    https://www.lancers.jp/
    Yuki Kanazawa

    View Slide

  2. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Speaker Biography 2
    Yuki Kanzawa
    Lancers, Inc. / Site Reliability Engineer (2013/11 -)
    Live in Tokyo, Japan
    Github:yKanazawa
    Twitter: @yakitori009
    Language: C++, Java, PHP, Go
    Hobby: Shogi(Japanese Chess)

    View Slide

  3. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    About Lancers
    https://www.lancers.jp/
    Genre: Crowdsourcing
    Start: 2008/4
    PHP
    5.2 → 5.3 → 5.6 → 7.3
    CakePHP
    1.2 → 1.3 → 2.8 → 2.10

    View Slide

  4. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Upgrade History (https://www.lancers.jp/)
    1.3 -> 2.8
    2.8 -> 2.10
    2.10 -> 3.x .. more
    5.3 -> 5.6
    5.6 -> 7.3
    ->
    PHP5.6
    requires
    2017/6/6
    2 months
    1.7 year
    2019/2/5
    1.8 month
    2019/3/27
    2019/3/28
    1 day
    2019/5/28
    2 months
    CakePHP2.10
    requires
    PHP7.3
    requires

    View Slide

  5. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    2019/11/9 CakeFest2019開催 5
    ●CakeFest Conferenceに登壇
    ○テーマ:「CakePHP3への滑らかなバージョンアップを考える

    View Slide

  6. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Forteeの構成

    View Slide

  7. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    foteeのサーバー構成
    php-cli
    smtp
    DB
    3306
    web
    ディレクトリ
    共有
    SQLクライアント 開発環境(エディタ)
    PHP 7.2
    CakePHP 3.5
    MySQL 5.7
    WWWブラウザ
    80

    View Slide

  8. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    開発環境のセットアップ

    View Slide

  9. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    開発環境
    ●セットアップ手順
    ●Windows環境で動かない
    ○Docker for Windows
    ○git for Windows
    ■makeコマンドがない
    ●Make for Windowsをインストール
    ■Cypressが動かない
    ●結局Macを使うことに。。。
    git clone https://github.com/hasegawa-tomoki/fortee.git
    cd fortee
    cp config/.env.local config/.env
    make up
    make install
    make migrate
    docker-compose run web bin/cake records import all

    View Slide

  10. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    テスト環境
    ●PHPUnit
    ●Cypress
    ○E2Eテスト環境
    % make test
    ...
    ..........W..........IIIIIIIR..IIIIIIII.FIII..RW..W...IIIRRRRIIII 65 / 86 ( 75%)
    I.IIIIIIIII.IIIIIIIII 86 / 86 (100%)
    ...
    FAILURES!
    Tests: 86, Assertions: 114, Failures: 1, Warnings: 3, Incomplete: 44, Risky: 6.
    make: *** [test] Error 1

    View Slide

  11. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    composer update

    View Slide

  12. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    composer update
    - Updating symfony/filesystem (v3.4.11 => v4.3.8): Downloading (100%)
    - Updating symfony/config (v3.4.11 => v3.4.35): Downloading (100%)
    - Updating theseer/tokenizer (1.1.0 => 1.1.3): Downloading (100%)
    - Updating myclabs/deep-copy (1.8.1 => 1.9.3): Downloading (100%)
    - Updating friendsofcake/bootstrap-ui (1.4.0 => 1.4.1): Downloading (100%)
    - Updating twig/twig (v1.35.3 => v1.42.4): Downloading (100%)
    - Updating ajgl/breakpoint-twig-extension (0.3.1 => 0.3.4): Downloading (100%)
    - Updating wyrihaximus/twig-view (4.3.4 => 4.3.5): Downloading (100%)
    - Updating symfony/process (v3.4.11 => v4.3.8): Downloading (100%)
    - Updating symfony/finder (v3.4.11 => v4.3.8): Downloading (100%)
    - Updating seld/jsonlint (1.7.1 => 1.7.2): Downloading (100%)
    - Updating justinrainbow/json-schema (5.2.7 => 5.2.9): Downloading (100%)
    - Installing composer/xdebug-handler (1.4.0): Downloading (100%)
    - Updating composer/spdx-licenses (1.4.0 => 1.5.2): Downloading (100%)
    - Updating composer/semver (1.4.2 => 1.5.0): Downloading (100%)
    - Updating composer/ca-bundle (1.1.1 => 1.2.4): Downloading (100%)
    - Updating composer/composer (1.6.5 => 1.9.1): Downloading (100%)
    - Updating m1/env (2.1.1 => 2.1.2): Downloading (100%)
    - Removing seld/cli-prompt (1.0.3)
    - Removing doctrine/lexer (v1.0.1)
    - Removing doctrine/inflector (v1.2.0)
    - Removing doctrine/collections (v1.4.0)
    - Removing doctrine/annotations (v1.4.0)
    - Removing doctrine/common (v2.7.3)
    - Updating cakephp/plugin-installer (1.1.0 => 1.1.1):
    - Updating paragonie/random_compat (v2.0.15 => v2.0.18): Downloading (100%)
    - Installing ralouphie/getallheaders (3.0.3): Downloading (100%)
    - Updating guzzlehttp/psr7 (1.4.2 => 1.6.1): Downloading (100%)
    - Updating guzzlehttp/guzzle (6.3.3 => 6.4.1): Downloading (100%)
    - Updating league/oauth2-client (2.3.0 => 2.4.1): Downloading (100%)
    - Updating symfony/polyfill-mbstring (v1.8.0 => v1.12.0): Downloading (100%)
    - Updating symfony/polyfill-ctype (v1.11.0 => v1.12.0): Downloading (100%)
    - Updating symfony/dom-crawler (v3.4.11 => v4.3.8): Downloading (100%)
    - Updating symfony/css-selector (v3.4.11 => v4.3.8): Downloading (100%)
    - Updating symfony/browser-kit (v3.4.11 => v4.3.8): Downloading (100%)
    - Updating fabpot/goutte (v3.2.2 => v3.2.3): Downloading (100%)
    - Installing markbaker/matrix (1.2.0): Downloading (100%)
    - Installing markbaker/complex (1.4.7): Downloading (100%)
    - Updating phpoffice/phpspreadsheet (1.3.1 => 1.9.0): Downloading (100%)
    - Updating phpoffice/phpexcel (1.8.1 => 1.8.2): Downloading (100%)
    - Updating react/promise (v2.7.0 => v2.7.1): Downloading (100%)
    - Updating mpyw/cowitter (v1.0.3 => v1.0.5): Downloading (100%)
    - Updating fzaninotto/faker (v1.8.0 => v1.9.0): Downloading (100%)
    - Updating doctrine/cache (v1.6.2 => 1.9.1): Downloading (100%)
    - Installing doctrine/event-manager (1.1.0): Downloading (100%)
    - Updating doctrine/dbal (v2.5.13 => v2.10.0): Downloading (100%)
    - Updating lapaz/quick-brown-fox (0.1.2 => 0.1.3): Downloading (100%)
    - Updating symfony/yaml (v3.4.17 => v3.4.35): Downloading (100%)
    - Installing symfony/polyfill-php72 (v1.12.0): Downloading (100%)
    - Updating symfony/var-dumper (v3.4.11 => v4.3.8): Downloading (100%)
    - Updating zendframework/zend-diactoros (1.7.2 => 1.8.7): Downloading (100%)
    - Updating psr/log (1.0.2 => 1.1.2): Downloading (100%)
    - Updating cakephp/chronos (1.1.4 => 1.2.8): Downloading (100%)
    - Updating cakephp/cakephp (3.5.17 => 3.5.18): Downloading (100%)
    - Updating fusic/encount (2.0.5 => 2.0.9): Downloading (100%)
    - Updating jakub-onderka/php-console-color (0.1 => v0.2): Downloading (100%)
    - Updating jakub-onderka/php-console-highlighter (v0.3.2 => v0.4): Downloading (100%)
    - Updating nikic/php-parser (v4.0.2 => v4.3.0): Downloading (100%)
    - Updating symfony/debug (v3.4.11 => v4.3.8): Downloading (100%)
    - Updating symfony/console (v3.4.11 => v3.4.35): Downloading (100%)
    - Updating psy/psysh (v0.9.6 => v0.9.9): Downloading (100%)
    - Updating squizlabs/php_codesniffer (3.3.0 => 3.5.2): Downloading (100%)
    - Updating cakephp/cakephp-codesniffer (3.0.5 => 3.1.2): Downloading (100%)
    - Updating doctrine/instantiator (1.2.0 => 1.3.0): Downloading (100%)
    - Updating sebastian/exporter (3.1.0 => 3.1.2): Downloading (100%)
    - Updating webmozart/assert (1.4.0 => 1.5.0): Downloading (100%)
    - Updating phpdocumentor/reflection-common (1.0.1 => 2.0.0): Downloading (100%)
    - Updating phpdocumentor/type-resolver (0.4.0 => 1.0.1): Downloading (100%)
    - Updating phpdocumentor/reflection-docblock (4.3.0 => 4.3.2): Downloading (100%)
    - Updating phpspec/prophecy (1.8.0 => 1.9.0): Downloading (100%)

    View Slide

  13. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    PHPUnit
    ●正常終了
    ○Twitterのテストだけスルー
    % make test
    ...
    ..........W..........IIIIIIIR..IIIIIIII.FIII..RW..W...IIIRRRRIIII 65 / 86 ( 75%)
    I.IIIIIIIII.IIIIIIIII 86 / 86 (100%)
    ...
    FAILURES!
    Tests: 86, Assertions: 114, Failures: 1, Warnings: 3, Incomplete: 44, Risky: 6.
    make: *** [test] Error 1

    View Slide

  14. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Cypress
    ●正常終了

    View Slide

  15. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    CakePHP3.5 -> CakePHP3.6

    View Slide

  16. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    修正内容
    ●composer.jsonの修正
    ●composer update
    Downloading (100%)
    - Updating cakephp/migrations (1.7.2 => 1.8.1): Downloading (100%)
    - Updating cakephp/debug_kit (3.14.2 => 3.16.7): Downloading (100%)
    - Updating wyrihaximus/twig-view (4.3.5 => 4.3.8): Downloading (100%)
    - Updating cakephp/bake (1.6.4 => 1.8.7): Downloading (100%)

    View Slide

  17. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    PHPUnit
    Encount¥Error¥EncountErrorHandler::handleError() -
    ROOT/vendor/fusic/encount/src/Error/EncountErrorHandler.php, line 22
    deprecationWarning - CORE/src/Core/functions.php, line 311
    Cake¥Core¥Plugin::routes() - CORE/src/Core/Plugin.php, line 306
    Cake¥Core¥Plugin::routes() - CORE/src/Core/Plugin.php, line 310
    include - ROOT/config/routes.php, line 326
    Cake¥Routing¥Router::_loadRoutes() - CORE/src/Routing/Router.php, line 1170
    Cake¥Routing¥Router::url() - CORE/src/Routing/Router.php, line 610
    App¥Classes¥MisocaCore::__construct() - APP/Classes/MisocaCore.php, line 28
    App¥Test¥TestCase¥Classes¥MisocaCoreTest::setUp() -
    ROOT/tests/TestCase/Classes/MisocaCoreTest.php, line 23
    ...
    You can disable deprecation warnings by setting `Error.errorLevel` to `E_ALL &
    ~E_USER_DEPRECATED` in your config/app.php
    ●正常終了
    ○以下のdeprecationWarningが出力されるようになった

    View Slide

  18. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Cypress
    2019-11-17 18:43:12 Notice: Deprecated (16384): You no longer need to call
    `Plugin::routes()` after upgrading to use Http¥Server.
    See https://book.cakephp.org/3.0/en/development/application.html#adding-the-new-http-
    stack-to-an-existing-application for upgrade information.
    - /var/www/html/config/routes.php, line: 326
    2019-11-17 18:43:18 Notice: Deprecated (16384): Accessing url as a property will be
    removed in 4.0.0. Use getPath() instead.
    - /var/www/html/src/Classes/UsersCore.php, line: 192
    2019-11-17 18:43:20 Notice: Deprecated (16384): Router::parse() is deprecated. Use
    Router::parseRequest() instead.
    This will require adopting the Http¥Server library. -
    /var/www/html/src/Classes/UsersCore.php, line: 195
    2019-11-17 18:43:20 Notice: Deprecated (16384): Response::type() is deprecated. Use
    setTypeMap(), getType() or withType() instead.
    - /var/www/html/src/Controller/AppController.php, line: 219

    ●正常終了
    ○debug.logにNoticeが出力されるようになった

    View Slide

  19. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    対策
    ●CakePHP4で削除予定の機能にNoticeが出力される
    ○Config/app.php に出力しない設定を追加

    View Slide

  20. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    CakePHP3.6 -> CakePHP3.7

    View Slide

  21. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    修正内容
    ●composer.jsonの修正
    ●composer update
    Downloading (100%)
    - Updating cakephp/debug_kit (3.16.7 => 3.21.0): Downloading (100%)
    - Updating cakephp/bake (1.8.7 => 1.10.1): Downloading (100%)

    View Slide

  22. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    PHPUnit
    ●正常終了
    ○Twitterのテストだけスルー
    % make test
    ...
    ..........W..........IIIIIIIR..IIIIIIII.FIII..RW..W...IIIRRRRIIII 65 / 86 ( 75%)
    I.IIIIIIIII.IIIIIIIII 86 / 86 (100%)
    ...
    FAILURES!
    Tests: 86, Assertions: 114, Failures: 1, Warnings: 3, Incomplete: 44, Risky: 6.
    make: *** [test] Error 1

    View Slide

  23. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Cypress
    ●fortee.sponsor.spec.jsでテスト失敗
    ○スポンサーグループの設定時

    View Slide

  24. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Cypress
    ●error.log
    ●以下のcontainをコメントアウトすれば発生しない。。。
    ○スポンサープラングループ(親要素)をselect
    ○ついでに子要素(スポンサープラン)をselect
    ■そのorderを取得する処理
    public function index()
    {
    $sponsorPlanGroups = $this->SponsorPlanGroups->find()
    // ->contain(['SponsorPlans' => function (¥Cake¥ORM¥Query $q) {
    // return $q->where(['SponsorPlans.sort' => 'asc']);
    // }])
    ->where(['SponsorPlanGroups.conference_id' => $this->activeConference->id])
    ->order(['SponsorPlanGroups.sort' => 'asc']);
    $this->set(compact('sponsorPlanGroups'));
    }
    Error: [InvalidArgumentException] Cannot convert value of type `string` to integer

    View Slide

  25. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    修正内容
    ●containの修正

    View Slide

  26. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    CakePHP3.7 -> CakePHP3.8

    View Slide

  27. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    修正内容
    ●composer.jsonの修正
    ●composer update
    Package operations: 0 installs, 2 updates, 0 removals
    - Updating cakephp/cakephp (3.7.9 => 3.8.6Loading from cache
    - Updating cakephp/bake (1.10.1 => 1.11.2): Loading from cache

    View Slide

  28. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    PHPUnit
    ●正常終了
    ○Twitterのテストだけスルー
    % make test
    ...
    ..........W..........IIIIIIIR..IIIIIIII.FIII..RW..W...IIIRRRRIIII 65 / 86 ( 75%)
    I.IIIIIIIII.IIIIIIIII 86 / 86 (100%)
    ...
    FAILURES!
    Tests: 86, Assertions: 114, Failures: 1, Warnings: 3, Incomplete: 44, Risky: 6.
    make: *** [test] Error 1

    View Slide

  29. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Cypress
    ●正常終了

    View Slide

  30. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    PHP7.2 -> PHP7.3

    View Slide

  31. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    修正内容
    ●Dockerfileの修正
    ○libzip-devのインストールが必要になった
    configure: error: Please reinstall the libzip distribution

    View Slide

  32. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    PHPUnit
    ●正常終了
    ○Twitterのテストだけスルー
    % make test
    ...
    ..........W..........IIIIIIIR..IIIIIIII.FIII..RW..W...IIIRRRRIIII 65 / 86 ( 75%)
    I.IIIIIIIII.IIIIIIIII 86 / 86 (100%)
    ...
    FAILURES!
    Tests: 86, Assertions: 114, Failures: 1, Warnings: 3, Incomplete: 44, Risky: 6.
    make: *** [test] Error 1

    View Slide

  33. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Cypress
    ●正常終了

    View Slide

  34. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    deprecatedライブラリの
    置き換え

    View Slide

  35. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Composerのdeprecatedライブラリ
    ●mpyw/twistoauth
    ○Use mpyw/cowitter instead
    ●phpoffice/phpexcel
    ○Use phpoffice/phpspreadsheet instead
    ●phpunit/phpunit-mock-objects
    ○No replacement was suggested
    Package mpyw/twistoauth is abandoned, you should avoid using it.
    Use mpyw/cowitter instead.
    Package phpoffice/phpexcel is abandoned, you should avoid using it.
    Use phpoffice/phpspreadsheet instead.
    Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it.
    No replacement was suggested.

    View Slide

  36. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Composerのdeprecatedライブラリ
    ●mpyw/twistoauth
    ○Use mpyw/cowitter instead
    ■cowitterに置き換え

    View Slide

  37. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Composerのdeprecatedライブラリ
    ●phpoffice/phpexcel
    ○Use phpoffice/phpspreadsheet instead
    ■既に移行済だったので削除
    ●移行例

    View Slide

  38. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Composerのdeprecatedライブラリ
    ●phpunit/phpunit-mock-objects
    ○No replacement was suggested
    ■PHPUnitをバージョンアップすれば消えそう

    View Slide

  39. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    CakePHP3.8 -> CakePHP4.0

    View Slide

  40. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    CakePHP4のインストール
    "require": {
    "php": ">=7.2",
    "cakephp/cakephp": "4.x-dev",
    "cakephp/plugin-installer": "^1.0",
    "mobiledetect/mobiledetectlib": "2.*"
    },
    "require-dev": {
    "cakephp/bake": "4.x-dev",
    "cakephp/cakephp-codesniffer": "dev-next",
    "cakephp/debug_kit": "4.x-dev",
    "cakephp/migrations": "4.x-dev",
    "josegonzalez/dotenv": "3.*",
    "phpunit/phpunit": "^8.0",
    "psy/psysh": "@stable"
    },
    ●依存関係が複雑
    ○https://github.com/cakephp/app/blob/4.x/composer.json
    をベースにcompser.json作り直し
    ○CakePHP4に対応してなかったライブラリ
    "adayth/cakephp-cipher-behavior": "^1.0",
    "fusic/encount": "^2.0",
    "pgbi/cakephp3-soft-delete": "^1.3",
    "sizuhiko/cake_fabricate": "^0.2.2"

    View Slide

  41. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    CakePHP4.0 Upgrade Guide
    https://book.cakephp.org/4/en/appendices/4-0-upgrade-guide.html

    View Slide

  42. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    CakeFestのMark Storyのセッション
    https://www.slideshare.net/markstory/safer-more-helpful-cakephp

    View Slide

  43. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    ctpファイルのphp化
    ●CakePHP4からctpがphpになる
    ●Templateディレクトリの位置が変わる
    ○appと同じ階層になる

    View Slide

  44. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    CakePHP4対応
    ●CakePHP4で削除される機能の対応
    ○E_USER_DEPRECATEDを復活させる

    View Slide

  45. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    CakePHP Upgrade toolを使う
    ●CakePHP Upgrade tool
    ○https://github.com/cakephp/upgrade
    ■4.xブランチに切り替え
    ●実行
    ○/src/Template → /templates に移動
    ○ctp → phpに変更
    root@localhost:~/upgrade# ./bin/cake filename locales /var/www/html

    root@localhost:~/upgrade# ./bin/cake templates locales /var/www/html
    Moving sub directories of /var/www/html/templatesfatal: source directory is empty,
    source=templates/Layout/Email, destination=templates/Layout/email_fatal: bad source,
    source=templates/Layout/email_, destination=templates/Layout/email/email_fatal: source directory is
    empty, source=templates/Element/Flash, destination=templates/Element/flash_fatal: bad source,
    source=templates/Element/flash_, destination=templates/Element/flash/flash_

    View Slide

  46. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Rectorを使う
    ●https://github.com/rectorphp/rector
    ○CakePHP4でないと動かない
    ■PHPUnit 8.4以上を要求する
    ●インストール

    View Slide

  47. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    Rectorを使う
    ●実行
    ○失敗。ここで時間切れ。。。
    root@localhost:/var/www/html# ./bin/cake upgrade rector src/
    [27-Nov-2019 17:46:37 Asia/Tokyo] PHP Fatal error: Declaration of
    App¥Application::middleware($middlewareQueue) must be compatible with
    Cake¥Http¥BaseApplication::middleware(Cake¥Http¥MiddlewareQueue $middleware): Cake¥Http¥MiddlewareQueue
    in /var/www/html/src/Application.php on line 30
    Fatal error: Declaration of App¥Application::middleware($middlewareQueue) must be compatible with
    Cake¥Http¥BaseApplication::middleware(Cake¥Http¥MiddlewareQueue $middleware): Cake¥Http¥MiddlewareQueue
    in /var/www/html/src/Application.php on line 30

    View Slide

  48. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    PHP7.3 -> PHP7.4

    View Slide

  49. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    PHP7.4
    ●PHP7.4
    ○2019/11/28リリース
    ●php-7.4-apache コンテナ
    ○2019/11/29リリース
    ●修正内容
    2 0 1 9 /1 1 /3 0 大改修!PHPレガシーコードビフォーアフター
    PHP7.4
    ●PHP7.4
    ○2019/11/28リリース
    ●php-7.4-apache コンテナ
    ○2019/11/29リリース
    ●修正内容

    View Slide

  50. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    修正内容
    ●Dockerfileの修正
    ○ENV PHP_OPENSSL=yes の設定が必要になった
    ○libonig-devのインストールが必要になった

    View Slide

  51. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    PHPUnit
    ●エラーが1つ増えた。。
    ●imagecreatefromjpeg 関数が見つからない
    ○php-gdが正しく入っていない?
    % make test
    ...
    ..........W..........IIIIIIIR..IIIIIIII.FIII..RW..W...IIIRRRRIIII 65 / 86 ( 75%)
    I.IIIIIIIII.IIIIIIIII 86 / 86 (100%)
    ...
    ERRORS!
    Tests: 87, Assertions: 99, Errors: 2, Failures: 1, Warnings: 3, Incomplete: 43, Risky: 6.
    make: *** [test] Error 2
    There were 2 errors:
    1) App¥Test¥TestCase¥Classes¥ForteeUtilTest::testCrop
    Error: Call to undefined function App¥Classes¥imagecreatefromjpeg()
    /var/www/html/src/Classes/ForteeUtil.php:118
    /var/www/html/tests/TestCase/Classes/ForteeUtilTest.php:64
    2) App¥Test¥TestCase¥Classes¥OctavCoreTest::testImport
    Error: Call to undefined function App¥Classes¥imagecreatefromjpeg()

    View Slide

  52. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    PHPUnit
    ●phpunit-mock-objectsからdeprecated
    ○PHPUnit のバージョンアップが必要そう
    ■CakePHP3はPHPUnit 6からバージョンアップは不可
    ●deprecatedは我慢するしかないかも
    Deprecated (8192)
    : Function ReflectionType::__toString() is deprecated
    [ROOT/vendor/phpunit/phpunit-mock-objects/src/Generator.php,

    View Slide

  53. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    PHP7.4で表示されるNotice
    'Error' => [
    'errorLevel' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED,
    ● config/app.php

    View Slide

  54. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    最後に

    View Slide

  55. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    会社概要

    View Slide

  56. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    エンジニア採用してます!
    ●エントリーはこちら!
    ○https://www.wantedly.com/companies/lancers/projects

    View Slide

  57. 2019/11/30 大改修!PHPレガシーコードビフォーアフター
    利用技術
    React

    View Slide