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 相关文章推荐
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
PHP中常用的输出函数总结
Sep 22 PHP
ThinkPHP整合百度Ueditor图文教程
Oct 21 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
PHP中利用sleep函数实现定时执行功能实现代码
Aug 25 PHP
php中this关键字用法分析
Dec 07 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
Nov 10 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
Aug 05 PHP
php装饰者模式简单应用案例分析
Oct 23 PHP
php libevent 功能与使用方法详解
Mar 04 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
Feb 26 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
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
PHP语法自动检查的Vim插件
2014/08/11 PHP
php中spl_autoload详解
2014/10/17 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
关于微信中a链接无法跳转问题
2016/08/02 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python实现Linux监控的方法
2019/05/16 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
送给程序员的20个Java集合面试问题
2014/08/06 面试题
中班上学期幼儿评语
2014/04/30 职场文书
企业党员一句话承诺
2014/05/30 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js