- 如何以fast-cgi的方式运行php
找到你安装的php,将上面引号里面的内容变换为你的php-cgi.exe的位置。注意,如果你的路径中包含空格,必须用双引号引起来。
值得注意的是,fast-cgi模式只适合于开发的时候,由于其经常崩溃的特性,在开发环境中,需要以fpm的模式来安装php,即,在安装php的时候需要安装fpm的扩展,然后配置fpm目录下的php.ini,运行fpm即可。fpm是用于管理fast-cgi的程序,他可以自启fast-cgi进程。
- 运行nginx
运行之后,修改nginx,然后重启nginx
- laravel报错"Call to a member function requestIsConditional() on null"
在laravel的路由组件中,v1这个版本号写在代码里面,请求的时候并不在url里面。
反正就是url出了问题。核对url与你定义的route是否一致
- This action is unauthorized
这个是由Request引起的。生成的request一般有两个函数,authorize和rules。前者用于权限校验,后者用于验证字段。
前者不满足会返回:This action is unauthorized
后者不满足会返回:The given data was invalid.
- name()函数
路由名称,方便在代码中对接口进行调用,例如
redirect(route(‘model.list’));
- laravel的请求日志
在storage/log下面
- 请求过滤中的参数,即request中rules方法
用得比较多的就是 required/nullable 了
- 报错 could not find driver
php没有找到数据库扩展
解决方法:
没有正确打开php.ini,原因就是配置错误,或者没找到配置
- laravel中直接打开项目
启动:
php artiscan serve
此方法只适合于线下开发,不适合于线上环境。内置webservice,不适合于生产环境
- Column not found: 1054 Unknown column ‘xxx.id’ in 'where clause
调用find()方法的时候出现这个,需要在Model里面指定$primaryKey
- redis启动指定配置文件
linux:./redis-server /opt/redis-3.2.3/redis.conf &
win10:redis-server redis.windows.conf
- 加入外部sdk后,加载进框架
composer dump-autoload
- 加入外部sdk
以阿里云的sdk为例,将阿里云的sdk放入到bootstrap目录下,然后找到Config.php,再在composer.json中的autoload中加入Config.php的路径。然后使用composer dump-autoload,加载完毕之后就可以进行使用了。
- laravel连接redis出现"
SELECT
failed: NOAUTH Authentication required.异常
redis密码的配置出错。要么是redis的问题,密码requirepass没有设置,或者没有设置以配置文件的方式打开redis。要么是项目的问题。
- 加斜杠和不加斜杠的区别
命名空间的问题
- redis获取ttl
$redis = app(‘redis.connection’);
$redis->ttl(‘key’);
- 报错 Call to undefined function curl_init()
打开php的curl扩展
- laravel 数据库迁移时,时间设置默认值
$table->timestamp(‘time’)->default(\DB::raw(‘CURRENT_TIMESTAMP’));
- Base table or view not found: 1146 Table ‘dhi_dev.posts’ doesn’t exist
表不存在
- 引入jwt后报错:Non-static method Tymon\JWTAuth\JWTAuth::attempt() should not be called statically
改成 use Tymon\JWTAuth\Facades\JWTAuth;
- Class Tymon\JWTAuth\Providers\JWT\NamshiAdapter does not exist
find you jwt.php of config file, update three part
‘jwt’ => ‘Tymon\JWTAuth\Providers\JWT\Namshi’,
‘auth’ => ‘Tymon\JWTAuth\Providers\Auth\Illuminate’,
‘storage’ => ‘Tymon\JWTAuth\Providers\Storage\Illuminate’
i have fixed it and it worked
- jwt配置
config里面的jwt.php和auth.php
- trait
- jwt:Undefined index: password
user_name和password这两个字段是获取token的必要字段,必须要填写
- Lumen
一个基于laravel的框架
- 打印调式结果
dd()
- auth.php中配置的provider是啥
契约,也就是默认方法的意思
- 新增字段迁移
php artisan make:migration add_remember_token_to_user_infos__table --table=user_infos
迁移 php artisan migrate
- Eloquent 模型和 Laravel 查询构造器的 database,有什么区别
前者是laravel提供的ORM框架
- auth(‘api’)->attempt 验证的是哪几个字段
验证的传入字段。如果一直返回false,请确定,password字段是一定要有的,同时,password在存入的时候,一定要调用
配置的加密算法进行加密,因为attempt算法会对密码进行加密然后再进行比较。
Hash::make()
- laravel 命令行调试器
- 解析token
auth(‘api’)->user()
- 统一验证jwt
在App/http/kernel.php中添加
‘api’ => [
‘throttle:60,1’,
‘bindings’,
‘jwt.auth’ => ‘Tymon\JWTAuth\Middleware\GetUserFromToken’,
],
然后在route的api.php中放入
function ($api) {
$api->group([
‘middleware’ => [‘api.throttle’,‘jwt.auth’],
‘limit’ => config(‘api.rate_limits.access.limit’),
‘expires’ => config(‘api.rate_limits.access.expires’),
]
即,加入jwt.auth
- 生成request
php artisan make:request xxxxx
- like语句的写法
- laravel如何上传图片
public 磁盘适用于要公开访问的文件。默认情况下,public 磁盘使用 local 驱动,
并且将这些文件存储在 storage/app/public 目录下。
为了使它们能通过网络访问,你需要创建 public/storage 到 storage/app/public 的符号链接
你可以使用 Artisan 命令 storage:link 来创建符号链接:
php artisan storage:link
注意部署的时候应该重新建立符号链接,也就是删除重新弄
- 如何打开laravel-admin
php artisan vendor:publish --provider=“Encore\Admin\AdminServiceProvider”
修改config/admin.php里面的内容
php artisan admin:install
- $request->except
如果需要检索输入数据的子集,则可以使用only和except方法。
这两种方法都接受单个array或动态参数列表
- 获得当前的时间
‘create_datetime’=>Carbon::now()
- 如何在显示用户的时候展示图片
$grid->occupation_image(‘Occupation image’)->image(route(‘admin.index’));
- laravel-admin点击edit会跳转到http://0.0.0.8/edit
如果是默认页面,点击edit会出现问题,如果不是默认页面,则不会出现问题。
- laravel-admin detail 如果是boolean类型,update不生效
- laravel-admin如何进行部署
部署的时候直接挂上去即可,不需要考虑重新发布一次
但是数据库如何确认呢?
- ubuntu安装redis
sudo apt-get install redis-server
- redis相关
配置文件打开requirepass
关闭redis redis-cli shutdown
- 迁移回滚
回滚上一次的迁移
php artisan migrate:rollback
回滚所有迁移
php artisan migrate:reset
回滚所有迁移并且再执行一次
php artisan migrate:refresh
php artisan migrate:refresh --seed
- laravel-admin部署在ubuntu上面
php artisan migrate 直接迁移即可
生产环境中,admin_users里面没有默认的用户,需要修改seeds目录下面的
DatabaseSeeder。在代码中加入
$this->call(\Encore\Admin\Auth\Database\AdminTablesSeeder::class);
然后执行php artisan db:seed就有数据了
- nginx配置之后不生效
不同nginx的版本,配置方法不一样。我windows的版本,nginx可以通过不同的域名监听不同的端口,直接配置即可。线上的ubuntu版本,只能监听相同的端口。
造成这个的原因是没有配置一个”Catch All”的缺省server
加一条默认的阻挡。
当所有server的规则都不匹配时,
nginx会采用第一条server配置,所以一般第一条server会使用阻止页面
server {
listen 80;
server_name _;
return 404;
}
- nginx反向代理未生效
proxy_pass
端口都使用80,然后nginx 直接通过域名自己进行区分
这里的原因是不同版本的nginx配置不一样引起的,我win10本地的nginx就可以通过不同的端口
对不同的域名进行直接绑定,而线上版本的nginx只有通过一个端口进行反向代理。
- nginx 限制ip访问次数
nginx可以通过HttpLimitReqModul和HttpLimitZoneModule配置来限制ip在同
一时间段的访问次数来防cc攻击。HttpLimitReqModul用来限制连单位时间内
连接数的模块,使用limit_req_zone和limit_req指令配合使用来达到限制。
一旦并发连接超过指定数量,就会返回503错误。HttpLimitConnModul用来限
制单个ip的并发连接数,使用limit_zone和limit_conn指令这两个模块的区别
前一个是对一段时间内的连接数限制,后者是对同一时刻的连接数限制。
limit_req zone=allips burst=5 nodelay;
- 项目上传到服务器中之后,不能正常显示图片
似乎是权限的问题,所有者是www-data
ubuntu 更改文件所有者,修改了权限依旧有问题
可能是没有建立得起软连接的缘故,删除public的storage目录,重新建立符号链接
php artisan storage:link
- laravel-admin 图片点击放大
这个应该可以自己写js控制的吧,Admin::script(),你的js代码
- laravel-admin tinyint类型不嫩正常显示
用display函数,实现闭包
- ubuntu本地操作redis
进入redis:redis-cli
密码验证: auth DHI123dhi
选择数据库:select 4
查看键:keys *
获取值:get user:registerxxxx89@qq.com
获取ttl:ttl user:findxxxx9@qq.com
- laravel-admin 将数字转换为中文输出
- ->editable(‘select’, [1 => ‘通过’, 2 => ‘不通过’])会导致前面的内容不可见
- grid列表里面可以是自定义列,出现了302found
数据库更新错误,问题是字段名写错了
- laravel-admin _method
_method的方法才是真正请求的方法
- form对象指示的是表单的类型
- 重定向,列表结果未刷新
目前只能手动刷新
- 获取对象的成员变量
->变量名
- 获取数组的长度
sizeof
- 获取id的时候,route中定义的名字应该与$request中获取的一致
- laravel or语句
- laravel left join
- php for循环
- php set集合
- laravel 修改中间件返回结果
jwt.auth 中间件 代码在哪
- laravel 框架修改默认的异常status_code
在config/api.php下面有这一段代码
‘errorFormat’ => [
‘message’ => ‘:message’,
‘errors’ => ‘:errors’,
‘code’ => ‘:code’,
‘status_code’ => ‘:status_code’,
‘debug’ => ‘:debug’,
],
也可以使用中间件进行修改
- laravel errorFormat 指定status_code
- 创建exception
- Laravel 中的模型事件与 Observer
观察者模式,监听多个事件
- 打印出中间结果
- laravel邮件模板,利用的是调用api的方式
- 去掉表单脚部查看继续创建继续编辑
- laravel admin 排序desc
- 下拉框直接保存
填默认值
闭包解决
闭包就是参数流动,只在里面流动
- laravel-admin文档
laravel-admin文档 - laravel-admin disabled的字段,在update的时候是不会传输的
- laravel-admin grid里面去掉新增按钮,增加导入按钮
- laravel-admin 如何建立url与方法的对应关系
看他是怎么请求的,然后根据这个请求建立Controller即可
- laravel国际化 (html)
在resource/lang下面有很多语言
项目使用的默认语言是在 config/app.php 配置文件里设定的,你可以按照实际需要修改它。
‘locale’ => ‘zh-CN’,
App::setLocale($locale); 动态设置语言环境
- laravel国际化 (api)
利用中间件做统一处理
- laravel 获取header
- 创建中间件和使用流程
https://learnku.com/laravel/wikis/25575 laravel里面的中间件就是java里面的拦截器,既可以拦截请求,也可以拦截结果
php artisan make:middleware LanguageMessenger
修改代码,前置,就动$request,后置就动 $response
$response = n e x t ( next( next(request);
注册中间件:
修改app/Http/Kernel.php,加入新建的中间件即可
- 判断属性是否存在
property_exists
- 中间件拦截并使用response
- php数组,如何确定变量在数组中