Laravel相关的一些故障解决


Posted in PHP onAugust 19, 2020

禁止全局csrf认证

在app/Http/Kernel.php中,$middleware表示全局中间件,而$routeMiddleware表示针对某个路由的中间件,所以只需要把csrf在$middleware中注释掉,然后在$routeMiddleware中添加'csrf' => 'App\Http\Middleware\VerifyCsrfToken'
如果要在某个路由上使用就这样:

Route::group(['middleware' => 'csrf'], function(){   // csrf保护的接口
  Route::get('/', 'HomeController@index');
}

处理上传文件

$file = Input::file('upload_file");// 获取上传文件对象
$file->isValid()          // 检验文件是否有效
$file->getClientOriginalName();  // 获取文件原名
$file->getFileName();       // 获取上传后缓存的文件的名字
$file->getRealPath();       // 获取缓存文件的绝对路径
$file->getClientOriginalExtension();// 获取上传文件的后缀
$file->getMimeType();       // 获取上传文件的MIME类型
$file->getSize();         // 获取上传文件的大小

手动清理配置缓存

php artisan config:cache

插入数据的时候出现MassAssignmentException in Laravel错误

需要给数据表设置可访问的字段,在Model里面

protected $fillable = array('字段1', '字段2');

php artisan db:seed出现[ReflectionException] Claxx XXXTableSeeder dows not exist错误

这是因为新增加了文件但是composer没有感知到,需要先执行composer dump-autoload

定义/修改字段类型为timestamp时出现错误:”Unknown column type “timestamp” requested.”

按照[How do I make doctrine support timestamp columns?]的做法,目前最简单的方式是直接用DB::statement()来写SQL语句

POST数据的时候出现The payload is invalid

我遇到这个情况是因为在做复杂的表单提交,直接提取X-XSRF-TOKEN的值,但是由于没有转移,导致后端token揭秘失败

保存model的时候出现错误:Missing argument 2 for Illuminate\Database\Eloquent\Model::setAttribute()

一般是Model的几个属性没有设正确,检查这几个值incrementing/timestamps/primarykey/fillable

队列出现Cannot initialize a MULTI/EXEC transaction over aggregate connections

升级到最新版laravel吧,然后将redis的扩展切换到phpredis,laravel5.3之前自带的predis不支持redis的sentinel,并且有些redis操作强依赖于predis的事务操作,各种纠结,最后都不能成功。或者自己写类似的中间件

Class ‘Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory' not found

偶尔安装了某些个第三方库会出现这种幺蛾子,可以用这种方式解决composer require symfony/psr-http-message-bridge

更新表时出现AH00052: child pid 71 exit signal Segmentation fault (11)

原因可能是没有设置主键而直接在该表上面更新数据,导致ORM不知道到底该更新谁。并且Laravel不支持复合主键(https://github.com/laravel/framework/issues/5517,作者不支持这种做法)。这种情况,要么给该表添加唯一主键,要么只能用where直接更新了。

Error while reading line from server

Predis需要设置read_write_timeout=0或者-1,特别是daemon任务,最好设置不超时

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

出现于5.2版本中,原因是.env文件中的配置的值,中间存在空格,如果中间有空格,需要将值用双引号包起来

Class env does not exist / Class request does not exist

通常出现在框架还未加载完成就报错,但是在处理错误的时候却使用了env()/request()这个功能,导致没有打印真实的错误。处理方式,一是不要使用app()->environment('...'),而是检查.env文件中是否有错误,例如包含空格的值,必须用双引号包围。我在自定义ExceptionHandler中遇到过几次

The given data failed to pass validation

认证出错却不知道具体错在哪里并且状态码是500,如果有用Dingo API,那么注意Request不要继承use Illuminate\Foundation\Http\FormRequest而应该是use Dingo\Api\Http\FormRequest

Call to undefined method setHidden

注意command的主逻辑不是fire而应该是handle

启动时报错Unknown: failed to open stream: No such file or directory in Unknown on line 0

可能是错误地删除了server.php文件,可以直接自己写一个:

/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package Laravel
 * @author  Taylor Otwell <taylor@laravel.com>
 */

$uri = urldecode(
  parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
);

// This file allows us to emulate Apache's "mod_rewrite" functionality from the
// built-in PHP web server. This provides a convenient way to test a Laravel
// application without having installed a "real" web server software here.
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
  return false;
}

 
require_once __DIR__.'/public/index.php';

composer install时报错: Please provide a valid cache path

需要手动创建缓存目录,在storage/framwork下面新建sessions、views、cache文件夹即可

总结

到此这篇关于Laravel相关的一些故障解决的文章就介绍到这了,更多相关Laravel故障解决内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
模拟OICQ的实现思路和核心程序(二)
Oct 09 PHP
php采集时被封ip的解决方法
Aug 29 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
php调用KyotoTycoon简单实例
Apr 02 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
PHP在线打包下载功能示例
Oct 15 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
Oct 13 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
windows 2008r2+php5.6.28环境搭建详细过程
Jun 18 PHP
php TP5框架生成二维码链接
Apr 01 PHP
聊聊 PHP 8 新特性 Attributes
Aug 19 #PHP
php提高脚本性能的4个技巧
Aug 18 #PHP
php判断IP地址是否在多个IP段内
Aug 18 #PHP
PHP 8新特性简介
Aug 18 #PHP
PHP大文件及断点续传下载实现代码
Aug 18 #PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 #PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
Aug 17 #PHP
You might like
解析smarty模板中类似for的功能实现
2013/06/18 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
JQuery基础语法小结
2015/02/27 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
vue通过过滤器实现数据格式化
2020/07/20 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
详解python3中的真值测试
2018/08/13 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
Python读写压缩文件的方法
2020/07/30 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
Yahoo的PHP面试题
2014/05/26 面试题
财会自我鉴定范文
2013/12/27 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
python 实现的截屏工具
2021/05/08 Python