LoginSignup
3
0

More than 3 years have passed since last update.

Laravel5.6 メモ

Last updated at Posted at 2018-07-25

・ローカルでの開発環境は、MacでHomesteadを利用
・本番サーバーはcentos7

ログファイルを日付ごとに分ける

Laravel/.env

LOG_CHANNEL=daily

上記のように設定すると、下記のようなログファイルにログが出力される
Laravel/storage/logs/laravel-2018-07-25.log

ディレクトリ指定してモデルを生成する

php artisan make:model Models/User

ルーティングの一覧を確認するコマンド

php artisan route:list
vagrant@homestead:~/code/Laravel$ php artisan route:list
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+------------+
| Domain | Method   | URI                    | Name             | Action                                                                 | Middleware |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+------------+
|        | GET|HEAD | /                      |                  | Closure                                                                | web        |
|        | GET|HEAD | api/user               |                  | App\Http\Controllers\UserController@index                              | api        |
|        | GET|HEAD | home                   | home             | App\Http\Controllers\HomeController@index                              | web,auth   |
|        | POST     | login                  |                  | App\Http\Controllers\Auth\LoginController@login                        | web,guest  |
|        | GET|HEAD | login                  | login            | App\Http\Controllers\Auth\LoginController@showLoginForm                | 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  |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+------------+

API通信にてCookieを使わずにセッションを使う

app/Http/Middleware/StartSession.php を新規作成して、「Illuminate\Session\Middleware\StartSession」を継承してgetSessionをオーバーライドする。

StartSession.php
<?php

namespace App\Http\Middleware;

use Illuminate\Session\Middleware\StartSession as IlluminateStartSession;
use Illuminate\Http\Request;

class StartSession extends IlluminateStartSession
{
    public function getSession(Request $request)
    {
        return tap($this->manager->driver(), function ($session) use ($request) {
            // リクエストからセッションIDを取得
            // サンプルとしてヘッダー情報にセッションIDをそのまま入れてリクエストしている
            $session_id = $request->header('x-session-id');
            // セッションIDを設定
            $session->setId($session_id);
        });
    }
}

app/Http/Kernel.php に新規作成したStartSessionを追加

Kernel.php
    protected $middlewareGroups = [
        'api' => [
            \App\Http\Middleware\StartSession::class,
            'throttle:60,1',
            'bindings',
        ],
    ];

app/Providers/SessionServiceProvider.php を新規作成し、「Illuminate\Session\SessionServiceProvider」を継承してregisterをオーバーライドする。

SessionServiceProvider.php
<?php
namespace App\Providers;

use Illuminate\Session\SessionServiceProvider as BaseSessionServiceProvider;

class SessionServiceProvider extends BaseSessionServiceProvider
{
    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->registerSessionManager();

        $this->registerSessionDriver();

        $this->app->singleton('App\Http\Middleware\StartSession');
    }
}

config/app.php のprovidersに作成したものを追加する。

app.php
    'providers' => [

        ...

        App\Providers\SessionServiceProvider::class,

    ],

Nginxで正しくルーティングされずに404

ローカル環境では全然問題なかったんですが、本番サーバーでは、トップページは表示されるけど、apiのURLを叩くと404 Not Foundになってしまった。nginxの設定をする必要があったみたいで、この時はhttpsでの通信だったので下記ファイルを変更。
/etc/nginx/conf.d/https.conf

https.conf
server {

        ... 略

        location ~ ^/api(/.*)$ {
                root [ドキュメントルートのパスを絶対パスを指定];
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root/index.php;
                include        fastcgi_params;
        }
}

↓ このブログがとても参考になりました。
http://issasn.hatenablog.com/entry/2013/11/01/214812

タスクスケジュール(定期処理)

↓artisanでcommandを作成
https://qiita.com/ritukiii/items/a70d89fa988b2d9afbc4

↓タスクスケジュールの設定
https://qiita.com/Takuma_Ikeda/items/1323e5a6bea51860ed57

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0