LoginSignup
26
26

More than 5 years have passed since last update.

Lumen、いろいろハマるところ

Posted at

はじめに

自分の中ではLaravelの簡易版がLumenという認識なのですが、ちょっと削りすぎて Laravel風がLaravel風味のFrameworkになってる気がします。

環境

  • Laravel Framework version Lumen (5.3.3) (Laravel Components 5.3.*)

Lumenのバージョンの確認

shell
$ php artisan -V

いろいろハマるところ

"php artisan key:generate"が できない。APP_KEYを作りたい。

shell
$ php -r "require 'vendor/autoload.php'; echo str_random(32).PHP_EOL;"
xygjeOa9lCRD88OFWzZ5tQA8gZHUtR9v

生成された文字列を.envのAPP_KEYに書き込む。

参考:Lumen Micro Framework => php artisan key:generate - Stack Overflow

メール送りたい。

(1) illuminate\mailパッケージを入れる

shell
$ composer require illuminate\mail

(2) bootstrap/app.phpの下記の行のコメントを外す

bootstrap/app.php
// Create The Application内, 26行目付近
$app->withFacades();

// Register Service Providers内, 81行目付近
$app->register(App\Providers\AppServiceProvider::class);

(3) app/Providers/AppServiceProvider.phpに、書き加える

app/Providers/AppServiceProvider.php
    public function register()
    {
       // ここから
        $this->app->singleton('mailer', function ($app) { 
            $app->configure('services'); 
            return $app->loadComponent('mail', 'Illuminate\Mail\MailServiceProvider', 'mailer'); 
        });
       // ここまで
    }

(4) configを書く

Laravelからコピーするか、Laravelのリポジトリ(laravel/mail.php at master · laravel/laravel)からコピーする。

※ 素のLumen5.3にはconfigディレクトリがないと思うので、作成する。

config/mail.php
<?php

return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
    'port' => env('MAIL_PORT', 587),
    'from' => [
        'address' => 'hello@example.com',
        'name' => 'Example',
    ],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'sendmail' => '/usr/sbin/sendmail -bs',
];

(5) メールを送る処理を書く。

app/Http/routes.php
use Illuminate\Support\Facades\Mail;

$app->get('/', function () use ($app) {

    Mail::send('emails.notify', [], function ($message)
    {
        $message->from('no-reply@example.com', 'example.com FROM-MAN')
                ->to('to.man@example.com')
                ->subject('mail subject');
    });    

    return $app->version();
});

参考:Sending mail in Lumen via SMTP - Emerico

routes.php はどこ?

shell
$ find . -name 'routes.php'
./app/Http/routes.php

config はどこ?

shell
$ find . -name 'config'
./vendor/laravel/lumen-framework/config

vendor配下なので、基本的に触らない。編集する必要がある場合は、./config/ディレクトリを作って、/vendor/laravel/lumen-framework/configからファイルをコピーして書き換える。

sqlite を使いたい。

  1. database/database.sqliteファイルを作る。
  2. .envを書き換え。DB_CONNECTIONsqliteにして、あとはコメントアウト。
.env
DB_CONNECTION=sqlite
# DB_HOST=localhost
# DB_PORT=3306
# DB_DATABASE=homestead
# DB_USERNAME=homestead
# DB_PASSWORD=secret
26
26
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
26
26