Laravelでバージョンを指定してプロジェクトを作成してみた!

Laravelでバージョンを指定してプロジェクトを作成してみた!

Laravelで古いバージョンを指定してプロジェクトを作成した時のメモです。

実行環境

  • Mac
  • Dockerにcomposerがインストール済
FROM php:7.4-apache

RUN apt update \
    && apt install -y \
        g++ \
        libicu-dev \
        libpq-dev \
        libzip-dev \
        zip \
        zlib1g-dev \
    && docker-php-ext-install \
        intl \
        opcache \
         pdo_mysql \
         mysqli \
   && docker-php-ext-enable mysqli \
   && a2enmod rewrite

# Xdebugのインストール
RUN pecl install xdebug-2.9.8 \
    && docker-php-ext-enable xdebug

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

バージョンを指定してLaravelのプロジェクトを作る方法

Docker環境なので、次のコマンドでコンテナに入ります。「php-apache」はコンテナ名で、このコマンドによりphp-apacheコンテナでCLIが開きます。

docker-compose exec php-apache /bin/bash

プロジェクトを作成するディレクトリに移動し、Laravelのプロジェクトを作成します。6.0系のバージョンで「laravelapp」というプロジェクトを次のコマンドで作成しました。

composer create-project "laravel/laravel=6.*" laravelapp --prefer-dist

プロジェクト作成後にバージョンを確認する

上のコマンド実行後にバージョンを確認してみました。プロジェクトのディレクトリに移動し、コマンドでバージョンを確認します。

cd laravelapp

php artisan -v

「Laravel Framework 6.20.44」と表示されました!(2022年9月現在)

ちゃんと6.0系のプロジェクトが作れていますね。

Laravel6はPHP8ではエラーとなる

上のプロジェクトはPHP7.4.30の環境で作りました。

はじめはPHP8で試したのですが、プロジェクト作成のcomposer create-projectコマンド実行でエラーが発生しました。

In Collection.php line 11:
                                                                                                           
  During inheritance of ArrayAccess: Uncaught ErrorException: Return type of Illuminate\Support\Collectio  
  n::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool,   
  or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www  
  /html/laravelapp/vendor/laravel/framework/src/Illuminate/Support/Collection.php:1277                     
  Stack trace:                                                                                             
  #0 /var/www/html/laravelapp/vendor/laravel/framework/src/Illuminate/Support/Collection.php(11): Illumin  
  ate\Foundation\Bootstrap\HandleExceptions->handleError(8192, 'Return type of ...', '/var/www/html/l...'  
  , 1277)                                                                                                  
  #1 /var/www/html/laravelapp/vendor/composer/ClassLoader.php(571): include('/var/www/html/l...')          
  #2 /var/www/html/laravelapp/vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile('/var/w  
  ww/html/l...')                                                                                           
  #3 /var/www/html/laravelapp/vendor/laravel/framework/src/Illuminate/Support/helpers.php(109): Composer\  
  Autoload\ClassLoader->loadClass('Illuminate\\Supp...')                                                   
  #4 /var/www/html/laravelapp/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(130)  
  : collect(Array)                                                                                         
  #5 /var/www/html/laravelapp/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(106)  
  : Illuminate\Foundation\PackageManifest->build()                                                         
  #6 /var/www/html/laravelapp/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(89):  
   Illuminate\Foundation\PackageManifest->getManifest()                                                    
  #7 /var/www/html/laravelapp/vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php(78):  
   Illuminate\Foundation\PackageManifest->config('aliases')                                                
  #8 /var/www/html/laravelapp/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterFacade  
  s.php(26): Illuminate\Foundation\PackageManifest->aliases()                                              
  #9 /var/www/html/laravelapp/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(219): Il  
  luminate\Foundation\Bootstrap\RegisterFacades->bootstrap(Object(Illuminate\Foundation\Application))      
  #10 /var/www/html/laravelapp/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(320)  
  : Illuminate\Foundation\Application->bootstrapWith(Array)                                                
  #11 /var/www/html/laravelapp/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129)  
  : Illuminate\Foundation\Console\Kernel->bootstrap()                                                      
  #12 /var/www/html/laravelapp/artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\C  
  omponent\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))               
  #13 {main}                                                                                               
                                                                                                           

Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 255

エラーをメモとして、残しておきます。