質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.77%

PHPフレームワークLumenのSessionクラスのバックエンド設定で.envの設定が反映されません

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 2,622

score 7

LumenのSession機能を思ったように設定できません。

.envファイルのSESSION_DRIVERをドキュメント通りにdatabasecookieredisにしても、1リクエスト間だけ有効なオンメモリセッションのまま挙動が変わってくれない症状に悩んでいます。

.envファイルはアプリケーションを再起動すると反映されることは分かっているので、SESSION_DRIVER=databaseのときにDB_USERNAME=hogeなどと適当な値を入力してみたところ、DBのエラーが確認できたので.envファイルの読み込み失敗ではないように思えます。

.envファイル意外に設定を変更しなければならない箇所があるのであれば、その方法について書かれたドキュメントやSOなどのリンクを頂きたいです。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

0

ひとまずPredisで無理矢理ふるまいだけsessionぽくしました。なんかいろいろ機能は足りないですが、頑張ります。

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Predis;
use Log;

class HogeController extends Controller {

  public function actionA(Request $request) {
    $session = new Predis\Client();
    $session->set('time', time());
    $value = $session->get('time');
    Log::info($value);

    return view('my.viewA', ["data"=>[]]);
  }

  public function actionB(Request $request) {
    $session = new Predis\Client();
    $value = $session->get('time');
    Log::info($value);

    return view('my.viewB', ["data"=>[]]);
  }
}

動作確認のためには
predis/prediscomposer updateするのと、OSXならbrew isntall redisしてください。
redis-cliでget timeすると永続化されているのが分かります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0


bootstrap/app.phpの5行目をアンコメントはされましたか?
そこで.envをロードしていると思います。

Dotenv::load(DIR.'/../'); //  .envの読込

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/03 22:14

    情報が少ない中でお答えいただきありがとうございます。

    ```:composer.json

    "require": {
    "laravel/lumen-framework": "5.0.*",
    "vlucas/phpdotenv": "~1.0",
    "spatie/laravel-tail": "^1.1",
    "barryvdh/laravel-debugbar": "dev-master",
    "facebook/php-sdk-v4" : "^4.0",
    "predis/predis" : "~1.0",
    "illuminate/redis" : "~5.0"
    },

    ```

    `composer update`も行っています。


    lumenおよびlaravelの英語ドキュメントおよびSOおよびgithub issueの内容は大体目を通しての質問なので、なかなか答えに辿り着けない気もしますが、中長期的な解決を目指しておつきあい頂ければと思います。

    キャンセル

  • 2015/06/03 23:21

    解決してませんが、おそらく同じ現象になっています。

    私も"illuminate/redis" : "~5.0"を入れて

    .env
    CACHE_DRIVER=redis
    SESSION_DRIVER=redis
    QUEUE_DRIVER=redis

    にして
    // route.php
    $app->get('test', function () use ($app) {
    Session::put('key', date('Ymd H:i:s'));
    return $value = Session::get('key');
    });

    $app->get('test2', function () use ($app) {
    return $value = Session::get('key');
    });

    testにアクセスして表示された時刻がtest2にアクセスしても空でした。

    bootstrap/app.phpの$app->middlewareのところが全部コメントアウトしてあってそこにSessionっぽいのがあり気になったので、アンコメントしてみるとilluminate/session/Store.php'のエラーになったりしました。


    お役に立てず申し訳ないですが、自分も今後使う可能性があるので気になっております。

    キャンセル

  • 2015/06/04 08:02

    > bootstrap/app.phpの$app->middlewareのところが全部コメントアウトしてあってそこにSessionっぽいのがあり気になったので、アンコメントしてみるとilluminate/session/Store.php'のエラーになったりしました。

    ありがとうございます。かなり良いヒントになりそうです。自己解決しましたら必ずここで共有致します。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る