みなとみらい自由開発研究室

大好きな横浜から貴方のお役に立てるかもしれない情報を発信します!

Laravel入門 構築編

time 2019/03/31

Laravel入門 構築編

こんにちは室長のゆうろです。LaravelはPHPの中で最も募集の多いフレームワークです。フレームワークで他には、Cake,Symfony,CodeIgniter等があります。今回はLaravel入門の本に沿って環境を構築してみました。Dockerが使える人はDocker経由のほうがきっといいですね。本に記載された手順だけですと躓きましたので、以下に備忘録がてら共有させて頂きます。

  1. PHPの入手
    https://www.php.net/downloads.php
    室長はここでなんとなく7.2のWindows downloadsをクリック後、

    VC15 x64 Thread Safe (2019-Mar-07 01:48:44)の

    php-7.2.16-Win32-VC15-x64.zipにしました。
  2. PHPのインストール
    インストールというよりは解凍です
  3. コンポーザーの入手
    https://getcomposer.org/download/
    Windows Installerをダウンロードする
  4. コンポーザーのインストール
    途中でPHPの解凍先を指定する
  5. Laravelのインストール
    コンポーザー経由となります。dos画面で

    composer global require "laravel/installer=~1.1"

    →とくに問題なくインストールされました。

  6. Laravelコマンドを環境変数PATHに登録
    windowsキーを押してpathと入力するのが早いですね

    「C:\Users\euro\AppData\Roaming\Composer\vendor\bin」を追加します
  7. プロジェクトの作成
    cd desktop
    laravel new laravelapp
    

    としたが以下エラーが発生。laravelappはプロジェクト名で任意です。(書籍がそうしてましたのでw)

    Crafting application...
    The system cannot find the path specified.
    Application ready! Build something amazing.

    これはエラーだと思うのですが、気にせず進めました

  8. ローカルでサーバーの起動
    php artisan serveとすると以下エラー
    PHP Warning: require(C:\Users\euro\Desktop\laravelapp/vendor/autoload.php): failed to open stream: No such file or directory in C:\Users\euro\Desktop\laravelapp\artisan on line 18

    →vendorフォルダがないと言われる

  9. vendorフォルダの作成を試みる
    composer install

    でvendorができるはずなので実施したが失敗した

    Problem 1
    - Installation request for league/flysystem 1.0.51 -> satisfiable by league/flysystem[1.0.51].
    - league/flysystem 1.0.51 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
    Problem 2
    - league/flysystem 1.0.51 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
    - laravel/framework v5.8.8 requires league/flysystem ^1.0.8 -> satisfiable by league/flysystem[1.0.51].
    - Installation request for laravel/framework v5.8.8 -> satisfiable by laravel/framework[v5.8.8].To enable extensions, verify that they are enabled in your .ini files:
    - C:\INIs\php\php-7.2.16-Win32-VC15-x64\php.ini
    You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

    →fileinfoの拡張モジュールが不足とのこと

  10. PHP.iniにfileinfoの拡張モジュールの使用を許可させる
    ;extension=fileinfo

    の;を解除

  11. composer installを再実施
    →正常終了
  12. php artisan serveを再実施
    http://localhost:8000/にアクセスすると500エラー
  13. ログを確認する
    「.\laravelapp\storage\logs」にあるログを開くとencryption関連でエラーが発生している

    production.ERROR: No application encryption key has been specified. {"exception":"[object] (RuntimeException(code: 0): No application encryption key has been specified. at C:\\Users\\euro\\Desktop\\laravelapp\\vendor\\laravel\\framework\\src\\Illuminate\\Encryption\\EncryptionServiceProvider.php:44)
    [stacktrace]
    #0 C:\\Users\\euro\\Desktop\\laravelapp\\vendor\\laravel\\framework\\src\\Illuminate\\Support\\helpers.php(1123): Illuminate\\Encryption\\EncryptionServiceProvider->Illuminate\\Encryption\\{closure}(NULL)
    

    キーがないとエラーがでるようです。

  14. キーの作成を試みる
    php artisan key:generate

    →.envがないとエラーを履く

    ErrorException : file_get_contents(C:\Users\euro\Desktop\laravelapp\.env): failed to open stream: No such file or directoryat C:\Users\euro\Desktop\laravelapp\vendor\laravel\framework\src\Illuminate\Foundation\Console\KeyGenerateCommand.php:96
    92| {
    93| file_put_contents($this->laravel->environmentFilePath(), preg_replace(
    94| $this->keyReplacementPattern(),
    95| 'APP_KEY='.$key,
    > 96| file_get_contents($this->laravel->environmentFilePath())
    97| ));
    98| }
    99|
    100| /**Exception trace:1 file_get_contents("C:\Users\euro\Desktop\laravelapp\.env")
    C:\Users\euro\Desktop\laravelapp\vendor\laravel\framework\src\Illuminate\Foundation\Console\KeyGenerateCommand.php:962 Illuminate\Foundation\Console\KeyGenerateCommand::writeNewEnvironmentFileWith("base64:Lly3bTaYjDR8g6liweiymVWUvH5q2sXZal69RhVHL9s=")
    C:\Users\euro\Desktop\laravelapp\vendor\laravel\framework\src\Illuminate\Foundation\Console\KeyGenerateCommand.php:80Please use the argument -v to see more details.
  15. .envをコピーする
    cp .env.example .env
  16. php artisan key:generate を再実施
    →正常終了
  17. 「http://localhost:8000/」のアクセスを再実施
    →正常にデモ画面が表示された

お疲れ様です。よいLaravelライフを。

追記:
5章のデータベース利用の章でsqliteを利用しますが、
Database (database.sqlite) does not exist. (SQL: PRAGMA foreign_keys = ON;)

could not find driver (SQL: PRAGMA foreign_keys = ON;)
と表示されて動かない事象が発生しました。色々ググってみて下記のような対応を参考にしましたが

.env
DB_CONNECTION=sqlite
#DB_DATABASE=homestead
database.php
‘database’ => env(‘DB_DATABASE’, database_path(‘database.sqlite’)),
上記のような箇所の修正でだけで動かなかったのでphpinfo等を見ていたのですが、

php.ini:915行目
extension=pdo_sqlite
のコメントをはずして有効にしてから、「php artisan serve」を再起動すると動きました。

sponsored link

down

コメントする




みなとみらい自由開発研究室

ゆうろ

ゆうろ

はじめまして!室長のゆうろです! フリーランスのエンジニアとして活動しています。 サイトではシンプルライフ、地元情報、書評、パソコン、愛用品、ライフハック、ノウハウ等を掲載しようと思います。 お仕事も募集しています! eurobeat@b4u.yokohama ココナラにも参加しています! よろしくね! [詳細]



sponsored link