Laravel 解决composer相关操作提示php相关异常的问题


Posted in PHP onOctober 23, 2019

Laravel 的一大特色就是使用 composer 来管理依赖包,这使得整个项目的升级、扩展变得异常容易。一般情况下,只需要我们输入几个命令并按下回车,就能完成插件包的安装、更新以及卸载工作。

但有时候你会碰到一种比较有意思的问题。那就是使用 composer 进行相关安装、更新插件操作的时候,却报 PHP 程序异常。比如,github中一个项目,在你上次更新之后上游代码又加入新功能,使用了一个新的依赖包。这时你使用git pull更新代码后,依赖包并没有安装,那么再用composer update 来更新这个必要的包时,却会因为项目程序中缺少这个包而报错……(说得有点儿绕),如此就陷入了一种想要安装这个包却报异常,而想要解决这异常又正好需要装这个包的死循环里了。

其实造成这种问题的原因就藏在项目根目录下那个 composer.json 文件里,稍微看一下就会发现,其中有一个 scripts 属性(内容见下方代码),其中设置了项目创建后、根包安装后、插件包安装前和安装后要自动完成的操作,它们大多是php artisan命令,而这些命令是由程序中 Console 组件驱动的,当程序发生异常,它们也就无法运行,于是当 composer 操作调起这些命令时就出现异常了。

"scripts": {
  "post-root-package-install": [
   "php -r \"copy('.env.example', '.env');\""
  ],
  "post-create-project-cmd": [
   "php artisan key:generate"
  ],
  "post-install-cmd": [
   "php artisan clear-compiled",
   "php artisan optimize"
  ],
  "pre-update-cmd": [
   "php artisan clear-compiled"
  ],
  "post-update-cmd": [
   "php artisan optimize"
  ]
 },

在了解了原因之后,再来说解决办法就不难理解了,有两种办法:

第一种方法比较笨,就是在其它空项目里安装这个包(或者找到以前装过的现成的),然后把源码复制到vendor目录后,最后使用 composer dump-autoloat --optimize 更新自动加载文件。

第二种则比较容易,因为它是针对造成这个问题的原因来对症下药的。

具体操作就是先删除上面提到的 scripts并保存 composer.json,然后进行需要的 comoser 操作,完成后再将删除的 scripts 部分加回去去。

需要注意的是,因为这次 composer 操作时没有自动运行 scripts 里那些命令,因而需要自己根据情况手动处理一下,比如 clear-compiled,optimize 等,或者在composer.json改回去之后再进行一次同样的composer操作。

在laravel最新的版本中,composer.json中的pre-update-cmd这条已经被删除了,而这条正是引起本文中所述问题的关键原因。各位可根据自己的情况手动删除它。

以上这篇Laravel 解决composer相关操作提示php相关异常的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP字符串处理的10个简单方法
Jun 30 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
php实现设计模式中的单例模式详解
Oct 11 PHP
PHP使用header()输出图片缓存实例
Dec 09 PHP
浅谈php中include文件变量作用域
Jun 18 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
php实现在线通讯录功能(附源码)
May 13 PHP
PHP云打印类完整示例
Oct 15 PHP
php创建图像具体步骤
Mar 13 PHP
ThinkPHP 3.2.2实现事务操作的方法
May 05 PHP
php基于 swoole 实现的异步处理任务功能示例
Aug 13 PHP
WordPress多语言翻译插件 - WPML使用教程
Apr 01 PHP
基于laravel缓冲cache的用法详解
Oct 23 #PHP
PHP实现简单登录界面
Oct 23 #PHP
laravel框架与其他框架的详细对比
Oct 23 #PHP
laravel清除视图缓存的代码
Oct 23 #PHP
PHP实现简单用户登录界面
Oct 23 #PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
Oct 22 #PHP
laravel 解决crontab不执行的问题
Oct 22 #PHP
You might like
php 正则匹配函数体
2009/08/25 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
thinkphp框架实现数据添加和显示功能
2016/06/29 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
JavaScript 乱码问题
2009/08/06 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
会计电算化专业毕业生自荐信
2013/12/20 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript