lumen安装
composer create-project --prefer-dist laravel/lumen 项目所在目录(当前目录可以用./)
错误:
Uncaught ReflectionException: Class path.storage does not exist in vendor\laravel
\framework\src\Illuminate\Container\Container.php:873
原因:某个包里引用了laravel的框架依赖
可以在bootstrap/app.php中添加来解决:
$app = new Laravel\Lumen\Application(
realpath(__DIR__ . '/../')
);
// 添加2行
// 参考:https://github.com/laravel/lumen-framework/issues/504
//$app->instance('path.config', app()->basePath() . DIRECTORY_SEPARATOR . 'config');
//$app->instance('path.storage', app()->basePath() . DIRECTORY_SEPARATOR . 'storage');
$app->instance('path.config', app()->configPath());
$app->instance('path.storage', app()->storagePath());
lumen的配置文件位置:
vendor\laravel\lumen-framework\config
安装Redis包
composer require predis/predis
composer require illuminate/redis
在bootstrap/app.php添加
$app->withFacades(); // 打开注释
$app->withEloquent(); // 打开注释
$app->instance('path.storage', app()->basePath() . DIRECTORY_SEPARATOR . 'storage'); // 添加
$app->register(\Illuminate\Redis\RedisServiceProvider::class); // 引入新的包需要手动添加ServiceProvider
.env 文件配置
REDIS_CLIENT=predis # 如果有装php的Redis扩展,不配置这项lumen默认使用PhpRedis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=
lumen解决跨域
安装依赖
composer require barryvdh/laravel-cors
复制配置文件:
\vendor\barryvdh\laravel-cors\cors.php => \config\cors.php
// 修改配置
'paths' => ['api/*'], // 指定路径下的接口跨域
'supports_credentials' => true, // 需要验证
在bootstrap\app.php中注册中间件
$app->configure('cors'); // 引入配置\config\cors.php
$app->middleware([
\Fruitcake\Cors\HandleCors::class,
]);
$app->routeMiddleware([
'cors' => \Fruitcake\Cors\HandleCors::class,
]);
$app->register(\Fruitcake\Cors\CorsServiceProvider::class);
请求方法必须是:OPTIONS,并且请求头中必须有字段:Access-Control-Request-Method,否则返回405
输出响应
use Illuminate\Http\Response;
return new Response(['result'=>'ok']);
return new Response(['result'=>'fail'], 400);