分类 lumen 下的文章

laravel 打开debug也不报明细错误,只报500错误


larave 你可能遇到过这样的问题,线下运行时没有错误的,拿到网上去就不可以了

就报个服务器500错误,其他什么也没有报,对,你就是从本地拿上去的

你可能开始各种怀疑,是不是APP_KEY没有更新呀,是不是vender没有上传完整呀,是不是少传了什么呀!

告诉你,这些应该都不是

遇到这样的问题,你可以去看一下storage 下的 logs文件,是不是不能正常的写入,就是是不是权限不够

还要一个framework文件也一样,但只要把logs文件权限放开就有错误提示了,神不神奇,对你惊不惊喜,意不意外,反正我是纠结了好一会才找到


lumen 添加用户访问权限 ,根据用户类型来


laravel 有一套严谨的用户权限管理,在这就不讨论了,比较难缕

对于一些简单的,这一套好像有点太过了点,比如我就明确的分个端,同一个端访问的内容是一样的,其实我只需要把路由分一下就OK了,不需要太多处理。

那怎样办呢?

先去看一下中间件

https://learnku.com/docs/lumen/5.7/middleware/2405

看完就知道中间件的作用了,其实就是把路由分三组,每组中间不同,不同的用户判断规则,就OK了

P如我的加入了Auth认证,是这样控制的

public function handle($request, Closure $next, $guard = null)
    {
        $user = $this->auth->guard()->user();
        if (@$user[' *_token'] != ' *** ') {
            $control = new Controller();
            return $control->error('授权未通过!请重新登录',401);
        }

        return $next($request);
    }

其他的定义中间件和路由怎样去实现呢?
P如:定义了两个中间件(bootstrap/app.hph)

'hcwAuth' => App\Http\Middleware\HcwAuthenticate::class,
'hcbAuth' => App\Http\Middleware\HcbAuthenticate::class,

路由分配:路由分组

$router->group(['middleware' => 'hcwAuth'],function () use ($router){
    $router->get('welcome', 'HomeController@index');
});
$router->group(['middleware' => 'hcbAuth'],function () use ($router){
    $router->get('welcome', 'HomeBoosController@index');
});

MySQL查询、更新数据总是成功,存入值为0


MySQL查询、更新数据总是成功,存入值为0

你,你没有看错,就出现了这样的事:

用一个字符串去查询数据库,如果没有值就插入,如果有就更新
会发现该字符串确实有值,不是0
但是呢,存进去后就变成0了
查询也一样,查询总是有值,本来就没有改字符串值,就一个0的记录

遇到这样的事情,应该就是字段类型错了,把他做出整形了,而且默认值还是0


lumen 报 You don't have permission to access


出现情况,访问局域网IP下的时候出现该情况

解决办法
加一个虚拟域名就好了

但你不想只加一个,以后这样的路径都可以按路径访问,那就绑定虚拟域名为IP,

如:

127.0.0.1    10.81.2.100


ServerName 10.81.2.100
DocumentRoot  C:\phpStudy\PHPTutorial\WWW


这样,需要绑定虚拟域名的情况都可以直接用IP加相对www的相对路径就好了


php 关于继承 异常出现问题


如果在父类写了一个方法,write(),里面写了如下异常处理

try {
     $this->validate($request,['id'=>'required'],['id.required'=>'请刷新页面再试']);
}catch (ValidationException $e) {
     return $this->error($this->format_exception_error($e));
}

子类继承了方法,使用parent::write();这样是可以正确异常处理的

如果把异常处理写成一个类方法,$this调用是不管用

同样,子类$this调用更不可以了,也不知道是这个laravel 这个异常处理有问题还是不能这样处理,以后还学研究