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

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

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

1790閲覧

Laravel 5.1 で Monolog\Handler\SlackHandler を production 環境のみ適用する

KazuyaGosho

総合スコア38

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/03/08 09:27

編集2017/03/08 09:31

###前提・実現したいこと

Laravel 5.1 でアプリケーションを作っています。
production 環境のみ、エラーがあった際にSlackに通知されるようにしたいです。

###該当のソースコード

vim bootstrap/app.php

php

1// ... 2 3// 本番の場合、Slackに通知する 4if (env('APP_ENV') === 'production') { 5 $app->configureMonologUsing(function($monolog) { 6 $slack_config = config('slack.error_alert'); 7 $monolog->pushHandler( 8 new \Monolog\Handler\SlackHandler( 9 $slack_config['token'], $slack_config['channel'], 10 $slack_config['username'], true, null, $slack_config['level'] 11 ) 12 ); 13 }); 14} 15 16return $app;

これで良いかと思いましたが、 env('APP_ENV')null になってしまい判定できませんでした。

###試したこと

分岐のところで、下記2つも試しましたが駄目でした。

php

1if ($app->environment('production') { // ... 2if (App::environment('production') { // ...

また、 判定する場所も変えてみました。
環境毎の設定はできましたが、肝心のSlackへの通知ができませんでした。

vim app/Providers/AppServiceProvider.php

php

1<?php 2 3namespace App\Providers; 4 5use Illuminate\Support\ServiceProvider; 6 7class AppServiceProvider extends ServiceProvider 8{ 9 // ... 10 11 public function boot() 12 { 13 // 本番の場合、Slackに通知する 14 if (env('APP_ENV') === 'production') { 15 $this->app->configureMonologUsing(function($monolog) { 16 $slack_config = config('slack.error_alert'); 17 $monolog->pushHandler( 18 new \Monolog\Handler\SlackHandler( 19 $slack_config['token'], $slack_config['channel'], 20 $slack_config['username'], true, null, $slack_config['level'] 21 ) 22 ); 23 }); 24 } 25 26 $this->app['request']->server->set(env('APP_PROTOCOL'), 'on'); 27 } 28 29 // ... 30}

public/index.php でもほぼ同様です。

###補足情報(言語/FW/ツール等のバージョンなど)

Slackへの通知自体はできているので、例えばTokenが間違っているということはありません。
環境の判定でつまづいています。

下記の記事を参考にしました。

$ composer show laravel/framework v5.1.45 monolog/monolog 1.22.0
$ php --version PHP 7.0.13 (cli) (built: Dec 6 2016 21:48:15) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

よろしくお願い致します。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

あまり綺麗な方法では無いですが、 .env ファイルを直接見に行くようにしました。

php

1$dotenv_path = __DIR__.'/../.env'; 2if (file_exists($dotenv_path) && 3 strpos(file_get_contents($dotenv_path), 'APP_ENV=production') !== false) { 4 5 //... 6 7}

投稿2017/03/09 05:11

KazuyaGosho

総合スコア38

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

.envファイル内にAPP_ENV=productionという記述がありますでしょうか?
env('APP_ENV')で取得できるので、まずはそちらを確認されると良いかと思います。

投稿2017/03/09 00:38

motuo

総合スコア3027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KazuyaGosho

2017/03/09 05:10

ご回答ありがとうございます。 書き忘れておりましたが、 `.env` ファイルは作成済みでした。 `cat .env` ``` APP_ENV=production # ... ``` 結果、直接 `.env` を見に行くという泥臭いやり方で解決致しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問