Laravel 学習中です。
PHP 7.4.16
Laravel Framework 8.30.1
の環境下です。
表題のとおり、クライアントの IP アドレスによって
192.168.* からのアクセスであれば APP_DEBUG=true
上記以外 からのアクセスであれば APP_DEBUG=false
にするというような制御はできますでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
こんな感じのミドルウェア置いとけばいけるかなと
ipInRanges
以下からは過去の自分のコードからの使い回しなので若干冗長だったりします
<?php declare(strict_types=1); namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class ConfigureUsingIpAddress { public function handle(Request $request, Closure $next) { $ranges = ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16']; config(['app.debug' => $this->ipInRanges((string)$request->ip(), $ranges)]); return $next($request); } protected function ipInRanges(string $ip, array $ranges): bool { foreach ($ranges as $range) { if ($this->ipInRange($ip, $range)) { return true; } } return false; } protected function ipInRange(string $ip, string $range): bool { if (strpos($range, '/') === false) { $range .= '/32'; } [$range, $netmask] = explode('/', $range, 2); $ipDecimal = ip2long($ip); $rangeDecimal = ip2long($range); return $ipDecimal !== false && $rangeDecimal !== false && ctype_digit($netmask) ? $this->ipInRangeDecimal($ipDecimal, $rangeDecimal, (int)$netmask) : false; } protected function ipInRangeDecimal(int $ip, int $range, int $netmask): bool { $netmask = ~(2 ** (32 - $netmask) - 1); return ($ip & $netmask) === ($range & $netmask); } }
投稿2021/03/18 05:22
編集2021/03/18 05:26総合スコア5223
0
config('app.debug')->set()
で上書きできるので、いい感じのところで変更してみてください。
または、.envから削ってindex.phpでdefindeするでも行けると思います
投稿2021/03/18 05:14
総合スコア5036
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答ありがとうございます。
すみません。laravel 初心者で config('app.debug')->set() をいれる「いい感じ」のところがわからないのですが、どのあたり? また true, false は set の引数でしょうか?
index.php は、public/index.php ですか?
index.phpでdefinde するというのは どのようにコーディングするのでしょうか?
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/18 05:26
2021/03/18 05:29
2021/03/18 05:30
2021/03/18 05:34
2021/03/18 05:37
2021/03/18 06:02