Laravel 5.4: 提示Specified key was too long error错误的解决办法

在laravel5,4上使用一个composer包的时候提示以下错误:

[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))
[PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

造成这个问题的原因一般是因为你的数据库版本低于5.7.7,解决办法。

修改AppServiceProvider.php文件

Laravel下日志的权限的问题

最近网站老是当掉,于是先去storage/logs下看了下日志,发现日志里面只有一条信息,于是又去查看了系统日志,发现了在提示“laravel-log-20161030 have no permission to xxx”,

于是又回到了storage/logs目录下,发现了今天刚生成的日志的用户和用户组都是root,而前面生成的日志都是apache和apache,突然想到了自己刚加过计划任务,而计划任务的执行权限应该是root用户,所以生成的日志也是root用户生成,而应用是apache用户跑的,所以自然没有权限来读取日志。

那么解决办法呢,在bootstrap/app.php 里添加如下代码:

Larave Error when upgrading to 5.2 – ‘Class log does not exist’

Laravel项目升级到5.2突然提示以下错误

PHP Fatal error: Uncaught exception ‘ReflectionException’ with message ‘Class log does not exist’ in /Users/freek/dev/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:776
Stack trace:
#0 /Users/freek/dev/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php(776): ReflectionClass->__construct(‘log’)
#1 /Users/freek/dev/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php(656): Illuminate\Container\Container->build(‘log’, Array)
#2 /Users/freek/dev/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(644): Illuminate\Container\Container->make(‘log’, Array)
#3 /Users/freek/dev/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php(887): Illuminate\Foundation\Application->make(‘Psr\\Log\\LoggerI…’)

在网上也找了很多种方法,最终的导致问题的原因是:evn文件中的变量设置出现了空格

比如API_NAME=TEST API 改为API_NAME=TESTAPI 或者 API_NAME=”TEST API”即可

Laravel更改密码加密方式

laravel 默认用的登录密码加密方式hash,但我以前的老项目是md5(password+salt)的方式,为了兼容,怎么修改默认的加密的方式呢?

1、修改/vender/laravel/framework/src/illuminate/Auth下的EloquentUserProvider.php文件,将validateCredentials修改为:

2、修改统一目录下的UserInterface.php文件,添加方法

 

 

3、在/app/models/User.php下添加这个方法:

Laravel/Lumen cors跨域支持

使用lumen做后端api开发,前端使用的是angularJS ,需要使用到options请求和跨域。

再github上找到一个很不错的gist 供大家参考:

 

主要就是2个文件:

CatchAllOptionsRequestsProvider.php

主要就是为了接收options请求

CorsMiddleware.php

主要是为了解决跨域

 

可以根据自己的需要在bootstrap/app.php里进行注册加载。