laravel相关

Catalogue
  1. 1. 背景
  2. 2. 问题汇总
  3. 3. 引用

背景

laravel 日常使用中遇到的一些问题及总结

问题汇总

  1. 框架安装完需要做的事情
  • .env 文件创建,修改里面的配置
  • chmod -R 777 storage/
  1. 如何去掉notice错误,undefined index .. 提示
    当你修改php.ini 里的error_reporting 后会发现,laravel 还是会报错,因为laravel 底层对
    php.ini 里的变量进行重写了。

修改地址:vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php
修改 error_reporting(E_ALL & ~E_NOTICE)

  1. session问题

    • 现象: 登录接口 session::put(‘user_id’,1)
      退出接口 session::forget(‘user_id’);
      用户信息 查询 session::get(‘user_id’),还有数据,不正常。
    • 解决办法:
      在退出接口里session::forget 或put空数据之后
      再加上一行代码 session::save()即可
  2. 如何添加异常提示
    位置:代码文件位置在app/Exceptions/Handler.php

1
2
3
4
5
6
7
8
9
10
11
public function render($request, Exception $exception)
{
if ($this->isHttpException($exception)) {
return parent::render($request, $exception);
}else{
return response()->json([
'code'=>$exception->getCode(),
'msg'=>$exception->getMessage(),
] );
}
}
  1. ubuntu 安装完之后composor 报错
  • 现象: 通过composer安装laravel框架过程中将需要调用ext-dom,若xml扩展未安装,这也会影响我们安装laravel。
    以上两个扩展是PHP7版本安装laravel所依赖也是容易被忽略的扩展,
    当你安装laravel无法正常生成vendor目录时就需要检查mbstring扩展加载情况了。

  • 解决 安装也是简单的:
    apt-get install php7.0-mbstring

    若提示:phpunit/phpunit 5.0.x requires ext-dom * -> the requested PHP extension dom is missing from your system.
    则需要安装xml扩展。
    apt-get install php7.0-xml

  1. group by 用法
1
2
3
4
ReviewMark::whereIn('package_id', $review_pid)
->where('is_cancel', 1)
->where("l4_answers", "!=", '')->select(\DB::raw('package_id,count(1) as num'))
->groupBy('package_id')->get()->toArray();
  1. laravel 定时任务不执行的问题

    • laravel 定时任务设置不重复执行的话会生成一个加密文件,当完成这个任务时候,会删掉这个文件。
      如果不删掉的话这个任务会一直不执行。

    • kernel.php 里 command 里面名称的方法命名,如果包含下划线也不执行,如commad(‘m_r_diff:sync’)

  2. composer 安装
    curl -sS https://getcomposer.org/installer | /data/soft/php-fpm_9000/bin/php
    sudo mv composer.phar /usr/local/bin/composer

  3. job 的使用

    • 生成文件

      在app目录下job 目录生成队列任务

      php artisan make:job SendReminderEmail

    • 添加到队列

      a. 默认
      queue::push(new SendReminderEmail());

      b. 指定队列名
      queue::pushOn(‘queue_name’,new SendReminderEmail());

    • 执行队列

      a. php artisan queue:work/listen 执行/监听

      b. 指定执行某个队列名

       --queue参数指定
        php artisan queue:work --queue='queue_name' --tries=3 --sleep=2
      
  4. 邮箱配置

1
2
3
4
5
6
MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=465
MAIL_USERNAME=maweizhuo1314@163.com
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=ssl
  1. 发送邮件乱码
1
$message->attach($attachment,['as'=>"=?UTF-8?B?".base64_encode($this->pad_filename)."?=.doc"]);
  1. 安装laravel
  • a. 创建

    composer create-project laravel/laravel=5.1.* --prefer-dist

  • b. 采用国内的包管理

composer config -g repositories.packagist composer http://packagist.phpcomposer.com

  • c. 全局配置

composer config -g secure-http false

  1. 框架安装redis 引入包

注: 需要引入的包可访问
package国内镜像官网
各种引入包下载地址

  • 修改 项目Conposer.json文件
  • 删除Conposer.lock
  • 执行composer clearcache
  • 执行composer update
  • 执行:composer require predis/predis
  1. 框架优缺点
优点 缺点
核心ioc容器 臃肿
依赖注入思想 写一个服务默认会引入多个类
中间件
composer 包管理 资源消耗大
定时脚本开发

引用

记录点滴,成为更好的自己。 — weizhuo.ma