PHP - Laravel - アップグレード - PHP 7.2 → PHP 7.4

 
1. 概要
2. アップグレード

1. 概要

 正に、お勉強中に、別のプロジェクトを作成しようとしたら

$ composer create-project laravel/laravel sample --prefer-dist
Creating a "laravel/laravel" project at "./sample"
Warning from https://repo.packagist.org: You are using an outdated version of Composer. Composer 2.0 is now available and you should upgrade. See https://getcomposer.org/2
 てなことになっちゃったのだ。  元々のインストール先の環境は、下記のとおりでありましたが
 項目   バージョン等   備考 
プラットフォーム FreeBSD 12.2 RELEASE
PHP php72-7.2.34
データベース postgresql96-server-9.6.19

 「PHP 7.2」を「PHP 7.4」へあげることになりました。

 本体のアップグレードに関しては、「メンテナンス・トラブルシュート - PHP - PHP 7.2 → 7.4」をご参照ください。

 「composer」による、モジュールのアップグレードに関しては、下記のサイトを参考にさせていただきました。

PHP: Laravel 7へのアップグレードを試した|...|BPS株式会社

2. アップグレード

 この時点で

$ php --version
PHP 7.4.14 (cli) (built: Jan 18 2021 14:53:57) ( ZTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.14, Copyright (c), by Zend Technologies
 てなことに、なっちょります。  プロジェクトのルートをカレントディレクトリとして

vi composer.json

    "license": "MIT",
    "require": {
        "php": "^7.2.5|^8.0",
        "fideloper/proxy": "^4.4",
        "fruitcake/laravel-cors": "^2.0",
        "guzzlehttp/guzzle": "^6.3.1|^7.0.1",
        "laravel/framework": "^7.29",
        "laravel/tinker": "^2.5"
    },
 11行目を

        "php": "^7.4.14|^8.0",
 って、書き換えるんじゃろか?  書き換えて。

composer update
 一度、エラーになって「/usr/ports/sysutils/php74-fileinfo」をインストールしました。  二度目

$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 5 installs, 21 updates, 2 removals
  - Removing scrivo/highlight.php (v9.18.1.6)
  - Removing phpunit/php-token-stream (3.1.2)

・・・	略	・・・

  - Updating phpunit/php-code-coverage (7.0.14 => 9.2.5): Downloading (100%)
  - Updating phpunit/phpunit (8.5.13 => 9.5.1): Downloading (100%)
phpunit/php-invoker suggests installing ext-pcntl (*)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi

   Exception

  The /usr/local/www/laravel/bootstrap/cache directory must be present and writable.

  at vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php:177
    173|      */
    174|     protected function write(array $manifest)
    175|     {
    176|         if (! is_writable($dirname = dirname($this->manifestPath))) {
  > 177|             throw new Exception("The {$dirname} directory must be present and writable.");
    178|         }
    179|
    180|         $this->files->replace(
    181|             $this->manifestPath, '<?php return '.var_export($manifest, true).';'

      +15 vendor frames
  16  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1
 つうことで、いったん「root」ユーザで。

chown -R hogehoge:hogehoge /usr/local/www/laravel/bootstrap/cache
 (「hogehoge」は、ログインユーザのグループ・ユーザ名)  ログインユーザに戻って、三度目。

$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
72 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
 やっと、うまいこといったようです。  再度、「root」ユーザで

chown -R www:www /usr/local/www/laravel/bootstrap/cache
ハイスピードプラン