XamppがインストールされたWindows7上に、PHPフレームワークLaravel 5.6をインストールして、ユーザ認証の機能を実装します。
- Windows 7 Professional SP1 32-bit
- Xampp Version: 7.2.4
PHP 7.2.4 - Laravel 5.6.18
- Composer 1.6.3
Composerを使用したLaravel 5.6のインストール
Composerを使ってLaravel 5.6をインストールするために、次のコマンドを実行します。「project_name」にはプロジェクト名を設定します。今回は「laravel」としました。プロジェクトは、コマンドを実行したディレクトリにプロジェクト名と同じフォルダを作成し、Laravel 5.6をインストールします。Laravel 5.5をインストールする場合、「5.6」を「5.5」に変更します。なお、Composerのインストールは、「Laravel5.3を用いたJosh Admin templateのインストール」を参照してください。
>composer create-project laravel/laravel --prefer-dist project_name 5.6 Installing laravel/laravel (v5.6.0) - Installing laravel/laravel (v5.6.0): Downloading (100%) Created project in project_name @php -r "file_exists('.env') || copy('.env.example', '.env');" Loading composer repositories with package information Updating dependencies (including require-dev)
ブラウザ上からURL「http://localhost/laravel/public/」を入力してLaravelを起動すると次の画面が表示されます。なお、「\laravel\resources\views\welcome.blade.php」は、「Welcome TomoSoft」を表示するように変更しています。
ユーザ認証機能の実装
この状態では、ユーザの認証機能が実装されていないので、次のコマンドで、認証の機能を一括して導入します。
> php artisan make:auth
次の処理が行われます。
- resources/views/home.blade.php生成
- resources/views/auth/内に複数のビューを生成
- resources/views/layouts/app.blade.php生成
- app/Http/Controllers/HomeController.php生成
- app/Http/Controllers/Auth/内に複数のコントローラを生成
- routes/web.php内にルートを追加
ブラウザ上からURL「http://localhost/laravel/public/」を入力してLaravelを起動すると、次に示すように「Whoops, looks like something went wrong.」が表示されます。
これは、「laravel\.env」が設定されていないためで、XAMPP のmySQLにデータベース「laravel」を作成して「laravel\.env」にその情報を次のように設定します。
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=
ブラウザ上から再度URL「http://localhost/laravel/public/」を入力してLaravelを起動すると、「LOGIN」と「REGISTER」が、さきほどの画面の右上に追加されて表示されます。「REGISTER」にユーザを登録しようとすると、次の二つのエラーメッセージが表示されました。
エラーメッセージ1
The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths.
処置:次のコマンドでキーを生成します。
>php artisan key:generate >php artisan config:clear
エラーメッセージ2
SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘laravel.users’ doesn’t exist (SQL: select count(*) as aggregate from `users` where `email` = inform@t ?
処置:次のコマンドでテーブルを作成します。
>php artisan migrate
以上の設定を終了すると、「LOGIN」を選択して表示された画面から「REGISTER」で登録したユーザ名とパスワードを入力すると、次の画面が表示されます。なお、「\laravel\resources\views\home.blade.php」は、「TomoSoft Login!!」を表示するように変更しています。
なお、コマンド「make:auth」で下記のようなRouteが生成されました。
>php artisan route:list +--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api,auth:api | | | GET|HEAD | home | home | App\Http\Controllers\HomeController@index | web,auth | | | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest | | | POST | login | | App\Http\Controllers\Auth\LoginController@login | web,guest | | | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web | | | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web,guest | | | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest | | | POST | password/reset | | App\Http\Controllers\Auth\ResetPasswordController@reset | web,guest | | | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web,guest | | | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest | | | POST | register | | App\Http\Controllers\Auth\RegisterController@register | web,guest | +--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
Laravel 5.6のフォルダ構成を示します。