composer.jsonを編集

php
>=5.6.4 → >=7.0.0
laravel/framework
5.4.* → 5.5.*
phpunit/phpunit
~5.0 → ~6.0
require-devセクション
filp/whoopsパッケージ(バージョン~2.0)を追加
scriptsセクション
post-autoload-dumpイベントへpackage:discoverコマンドを追加

"require": {
        "php": ">=7.0.0",
        "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0"
    },
"require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "filp/whoops":"~2.0",
        "phpunit/phpunit": "~6.0"
    },


"post-autoload-dump":[
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]

[vagrant@localhost laravel]$ ls
blog composer.phar
[vagrant@localhost laravel]$ cp composer.phar blog/composer.phar
[vagrant@localhost laravel]$ cd blog
[vagrant@localhost blog]$ ls
app composer.lock package.json resources tests
artisan composer.phar phpunit.xml routes vendor
bootstrap config public server.php webpack.mix.js
composer.json database readme.md storage
[vagrant@localhost blog]$ php composer.phar update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 12 installs, 13 updates, 1 removal
– Removing symfony/yaml (v4.2.5)
– Updating paragonie/random_compat (v2.0.18 => v9.99.99): Loading from cache
– Installing symfony/polyfill-php72 (v1.11.0): Downloading (100%)
– Installing symfony/polyfill-intl-idn (v1.11.0): Downloading (100%)
– Installing symfony/polyfill-iconv (v1.11.0): Downloading (100%)
– Installing doctrine/lexer (v1.0.1): Loading from cache
– Installing egulias/email-validator (2.1.7): Downloading (100%)
– Updating swiftmailer/swiftmailer (v5.4.12 => v6.2.0): Downloading (100%) – Installing psr/simple-cache (1.0.1): Loading from cache
– Installing psr/container (1.0.0): Loading from cache
– Updating laravel/framework (v5.4.36 => v5.5.45): Downloading (100%)
– Updating sebastian/recursion-context (2.0.0 => 3.0.0): Loading from cache
– Installing sebastian/object-reflector (1.1.1): Loading from cache
– Updating sebastian/object-enumerator (2.0.1 => 3.0.3): Loading from cache
– Updating sebastian/global-state (1.1.1 => 2.0.0): Loading from cache
– Updating sebastian/exporter (2.0.0 => 3.1.0): Loading from cache
– Updating sebastian/environment (2.0.0 => 3.1.0): Loading from cache
– Updating sebastian/diff (1.4.3 => 2.0.1): Downloading (100%)
– Updating sebastian/comparator (1.2.4 => 2.1.3): Downloading (100%)
– Updating phpunit/phpunit-mock-objects (3.4.4 => 5.0.10): Downloading (100%) – Installing theseer/tokenizer (1.1.2): Loading from cache
– Updating phpunit/php-code-coverage (4.0.8 => 5.3.2): Downloading (100%) – Installing phar-io/version (1.0.1): Loading from cache
– Installing phar-io/manifest (1.0.1): Loading from cache
– Updating phpunit/phpunit (5.7.27 => 6.5.14): Downloading (100%)
– Installing filp/whoops (2.3.1): Loading from cache
filp/whoops suggests installing whoops/soap (Formats errors as SOAP responses)
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Package manifest generated successfully.
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize
[vagrant@localhost blog]$ php artisan –version
Laravel Framework 5.5.45

うおおおおおおおおおおおおおおおおおおお
アップデートできたーーーーーーーーーーーーーーーーー
すげーーーーーーーーーーーーーー

続いて、5.5→5.6をやりましょう。

Laravel5.4から5.5へアップグレード

まず、composer.jsonを見てみましょう。

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.6.4",
        "laravel/framework": "5.4.*",
        "laravel/tinker": "~1.0"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~5.7"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    }
}

ふむ。

Laravel 5.4を入れる

まずcomposerを入れた状態で、
[vagrant@localhost laravel]$ php composer.phar create-project laravel/laravel blog “5.4.*”

replacement was suggested.
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize
Generating optimized class loader
The compiled services file has been removed.
> php artisan key:generate
Application key [base64:hogehoge] set successfully.

[vagrant@localhost laravel]$ ls
blog composer.phar
[vagrant@localhost laravel]$ cd blog
[vagrant@localhost blog]$ php artisan -V
Laravel Framework 5.4.36

vagrant@localhost blog]$ php artisan serve –host 192.168.35.10 –port 8000
Laravel development server started:

おおおおおおおおおおおお、いいねー

rm –recursive

The rm command does not set the directory for deletion unless the option is set.

If you also want to delete directories, specify the -r option.

[vagrant@localhost laravel]$ ls
blog  composer.phar
[vagrant@localhost laravel]$ rm -r blog
[vagrant@localhost laravel]$ ls
composer.phar

Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.

composer.jsonを編集します。

"require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "symfony/css-selector": "3.1.*",
        "symfony/dom-crawler": "3.1.*"
    },

updateします。
[vagrant@localhost blog]$ php composer.phar update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 0 updates, 27 removals
– Removing webmozart/assert (1.4.0)
– Removing theseer/tokenizer (1.1.2)
– Removing sebastian/version (2.0.1)
– Removing sebastian/resource-operations (2.0.1)
– Removing sebastian/recursion-context (3.0.0)
– Removing sebastian/object-reflector (1.1.1)
– Removing sebastian/object-enumerator (3.0.3)
– Removing sebastian/global-state (2.0.0)
– Removing sebastian/exporter (3.1.0)
– Removing sebastian/environment (4.1.0)
– Removing sebastian/diff (3.0.2)
– Removing sebastian/comparator (3.0.2)
– Removing sebastian/code-unit-reverse-lookup (1.0.1)
– Removing phpunit/phpunit (7.5.8)
– Removing phpunit/php-token-stream (3.0.1)
– Removing phpunit/php-timer (2.1.1)
– Removing phpunit/php-text-template (1.2.1)
– Removing phpunit/php-file-iterator (2.0.2)
– Removing phpunit/php-code-coverage (6.1.4)
– Removing phpspec/prophecy (1.8.0)
– Removing phpdocumentor/type-resolver (0.4.0)
– Removing phpdocumentor/reflection-docblock (4.3.0)
– Removing phpdocumentor/reflection-common (1.0.1)
– Removing phar-io/version (2.0.1)
– Removing phar-io/manifest (1.0.3)
– Removing myclabs/deep-copy (1.9.1)
– Removing doctrine/instantiator (1.2.0)
Writing lock file
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize
Generating optimized class loader
The compiled class file has been removed.
[vagrant@localhost blog]$ php artisan -V
Laravel Framework version 5.3.31

なぜだあああああああああああああああああ

composerでlaravel5.3を入れる

まず、5.2と同じようにやってみる。
[vagrant@localhost laravel]$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading…

Composer (version 1.8.5) successfully installed to: /home/vagrant/local/app/laravel/composer.phar
Use it: php composer.phar

[vagrant@localhost laravel]$ php composer.phar create-project laravel/laravel blog “5.3.*”

[UnexpectedValueException]
Could not parse version constraint “5.3.*”: Invalid version string ““5.3.*””

create-project [-s|–stability STABILITY] [–prefer-source] [–prefer-dist] [–repository REPOSITORY] [–repository-url REPOSITORY-URL] [–dev] [–no-dev] [–no-custom-installers] [–no-scripts] [–no-progress] [–no-secure-http] [–keep-vcs] [–remove-vcs] [–no-install] [–ignore-platform-reqs] [–] [] [] []

あれ、エラー??

公式を見ます。
https://readouble.com/laravel/5.3/ja/installation.html

ページ中段の「Composer Create-Project」を見ます。

[vagrant@localhost laravel]$ php composer.phar create-project –prefer-dist laravel/laravel blog “5.3.*”
Installing laravel/laravel (v5.3.30)
– Installing laravel/laravel (v5.3.30): Downloading (100%)

[vagrant@localhost blog]$ php artisan -V
Laravel Framework version 5.3.31

The “-o” option does not exist.

[vagrant@localhost blog]$ php artisan serve -host 192.168.35.10 -port 8000

[Symfony\Component\Console\Exception\RuntimeException]
The “-o” option does not exist.

ん?あれ、なんかおかしい。
Github issueを見てみましょう。
https://github.com/composer/composer/issues/6645

ハイフン”-“は一つではなく、複数と記載がありますね。
[vagrant@localhost blog]$ php artisan serve –host 192.168.35.10 –port 8000
Laravel development server started on http://192.168.35.10:8000/

お、とりあえず行けました! app/Http/Controllers/Controller.php はいいのかな。
とりあえず、5.2→5.3は良しとして、続いて5.3→5.4をやろうと思います。

laravel5.2→5.3 boot関数の引数削除

app/Providers/AuthServiceProvider.php<>

    public function boot(GateContract $gate)
    {
        $this->registerPolicies($gate);

        //
    }

public function boot()
    {
        $this->registerPolicies();

        //
    }

EvenServiceProvider.php

public function boot(DispatcherContract $events)
    {
        parent::boot($events);

        //
    }

public function boot()
    {
        parent::boot();

        //
    }

RouteServiceProvider.php

public function boot(Router $router)
    {
        //

        parent::boot($router);
    }
public function boot()
    {
        //

        parent::boot();
    }

再度アップデートしてみる。
[vagrant@localhost blog]$ php composer.phar update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize
Generating optimized class loader
The compiled class file has been removed.

とりあえずエラーは出なくなりましたね。

slow_query and general_log

– general_log: all queries log
– slow_query_log: slow query, long-running queries logs
– long_query_time: slow query time, second

うーん、全部見れれば盤石のような気もするが、ケースバイケースのようにも見えますね。。

laravel5.2→5.3へのアップグレード

まず、composer.jsonを見てみます。

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~4.0",
        "symfony/css-selector": "2.8.*|3.0.*",
        "symfony/dom-crawler": "2.8.*|3.0.*"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}

以下を修正します。
“laravel/framework”: “5.3.*”
“symfony/css-selector”: “2.8.*|3.1.*”,
“symfony/dom-crawler”: “2.8.*|3.1.*”

updateします。
[vagrant@localhost blog]$ php composer.phar update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 15 updates, 0 removals
– Updating symfony/var-dumper (v3.0.9 => v3.1.10): Downloading (100%)
– Updating symfony/translation (v3.0.9 => v3.1.10): Downloading (100%)
– Updating symfony/routing (v3.0.9 => v3.1.10): Downloading (100%)
– Updating symfony/process (v3.0.9 => v3.1.10): Downloading (100%)
– Updating symfony/debug (v3.0.9 => v3.1.10): Downloading (100%)
– Updating paragonie/random_compat (v1.4.3 => v2.0.18): Downloading (100%) – Updating symfony/http-foundation (v3.0.9 => v3.1.10): Downloading (100%) – Updating symfony/http-kernel (v3.0.9 => v3.1.10): Downloading (100%)
– Updating symfony/finder (v3.0.9 => v3.1.10): Downloading (100%)
– Updating symfony/console (v3.0.9 => v3.1.10): Downloading (100%)
– Installing ramsey/uuid (3.8.0): Loading from cache
– Updating nikic/php-parser (v2.1.1 => v3.1.5): Downloading (100%)
– Updating psy/psysh (v0.7.2 => v0.8.18): Downloading (100%)
– Updating laravel/framework (v5.2.45 => v5.3.31): Downloading (100%)
– Updating symfony/css-selector (v3.0.9 => v3.1.10): Downloading (100%)
– Updating symfony/dom-crawler (v3.0.9 => v3.1.10): Downloading (100%)
ramsey/uuid suggests installing ircmaxell/random-lib (Provides RandomLib for use with the RandomLibAdapter)
ramsey/uuid suggests installing ext-libsodium (Provides the PECL libsodium extension for use with the SodiumRandomGenerator)
ramsey/uuid suggests installing ext-uuid (Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator)
ramsey/uuid suggests installing moontoast/math (Provides support for converting UUID to 128-bit integer (in string form).)
ramsey/uuid suggests installing ramsey/uuid-doctrine (Allows the use of Ramsey\Uuid\Uuid as Doctrine field type.)
ramsey/uuid suggests installing ramsey/uuid-console (A console application for generating UUIDs with ramsey/uuid)
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize

[ErrorException]
Declaration of App\Providers\EventServiceProvider::boot(Illuminate\Contracts\Events\Dispatcher $events) should be compatible with Illuminate\Foundation\Support\Providers\EventServiceProvider::boot()

Script php artisan optimize handling the post-update-cmd event returned with error code 1

なにいいいいいいいいいいいいいいいいいいいいいいいい
app/Providers/AuthServiceProvider.php
app/Providers/EventServiceProvider.php
app/Providers/RouteServiceProvider.php
boot関数が変わったようです。 なるほどー、こうやって修正していくのね。。