by Devin Yang

建立于: 2年前 ( 更新: 2年前 )

Laravel的调试模式相当丰富,Laravel官网有提醒,在本地端开发可设置APP_DEBUG为true,
但是在产品环境,这个值必需永远都是False。

虽然可以用php artisan down的方式进入维护模式,加上secret就能访问。

artisan down --secret=NWQwODZhNTM0ODY5Zjc1MDdkMWI4NzIy

再用网址网启后补上设置的secret
https://yourserver.example/NWQwODZhNTM0ODY5Zjc1MDdkMWI4NzIy

但如果在开发的东西,就是需要有外网的环境时,例如BOT的webhook,怎么辨呢🥺,至少要能锁个外网IP吧。
我目前做法,调整config/app.php,这样就能透过外网的方式决定是否启动DEBUG模式了。

/*
    |--------------------------------------------------------------------------
    | Application Debug Mode
    |--------------------------------------------------------------------------
    |
    | When your application is in debug mode, detailed error messages with
    | stack traces will be shown on every error that occurs within your
    | application. If disabled, a simple generic error page is shown.
    |
    */

    //'debug' => (bool) env('APP_DEBUG', false),
   'debug' => env('APP_DEBUG', ($_SERVER[env("PROXY_REAL_IP","REMOTE_ADDR")]??"null") == env('APP_CAN_DEBUG','') ? true : false),

在上方设置中,我们可以把.env的APP_DEBUG变更成APP_CAN_DEBUG=我的外网IP。
需要的话,再补上PROXY_REAL_IP,用来定义主机或容器能取得的真实IP。

这样一来只有要在.env中进行相关设置,就可以安心的进入Debug mode罗,
不用时调.env中的APP_CAN_DEBUG等於false就可锁起来。

#APP_CAN_DEBUG=false
PROXY_REAL_IP=HTTP_X_REAL_IP
APP_CAN_DEBUG=111.248.117.140

PROXY_REAL_IP用来设置了Proxy在header中带的真实IP,可依自己的环境进行设置。
像是HTTP_X_FORWARDED_FOR或是HTTP_X_REAL_IP等。
 

我们可写个简单的Route用phpinfo查自己的外网IP及$_SERVER的header名称为何,确认有没有设置错误。

Route::get('/myphpinfo', function(){
    phpinfo();
});

Tags: laravel Laravel security

Devin Yang

文章内容无法一一说明,如果您有什么不了解处,欢印提问哦:)

No Comment

Post your comment

需要登入才可留言!

类似文章


laravel

Laravel思绪整理,从Model到DatabaseSeeder.

本文将一步一步介绍相关的命令用例: Model=>Factory=>Seeder=>DatabaseSeeder 一步一脚印,让我们就从Model开始检视所有流程到DatabaseSeeder。

laravel

在laravel中自定义自己的helper

在Laravel的框架中,包含了相当大量的PHP功能(php functions),称为helper。 https://laravel.com/docs/5.6/helpers 那我们要如何在Laravel中自定义自己的helper呢,其实相当简单呢.. 在composer.json中autoload内的files新建即可。

dlaravel

如何在host直接运行容器内,不同Project的php artisan.

本篇为D-Laravel的运用教程,如何在主机端直接运行container内的php artisan. 自定义别名后,就能直接在host端的project数据夹内,直接运行contianer内的php artisan了。 alias a="../../artisan.sh"