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 相关文章推荐
层叠菜单的动态生成
Oct 09 PHP
php 三维饼图的实现代码
Sep 28 PHP
UCenter Home二次开发指南
May 28 PHP
PHP5 字符串处理函数大全
Mar 23 PHP
PHP递归算法的详细示例分析
Feb 19 PHP
PHP调用VC编写的COM组件实例
Mar 29 PHP
yii中widget的用法
Dec 03 PHP
php常量详细解析
Oct 27 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
php格式文件打开的四种方法
Feb 24 PHP
Laravel框架实现利用监听器进行sql语句记录功能
Jun 06 PHP
PHP预定义接口――Iterator用法示例
Jun 05 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统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
2017/04/27 jQuery
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
python去除扩展名的实例讲解
2018/04/23 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
python实现Dijkstra静态寻路算法
2019/01/17 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
python与mysql数据库交互的实现
2020/01/06 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
Python matplotlib可视化实例解析
2020/06/01 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
写自荐信的七个技巧
2013/10/15 职场文书
中专药剂专业应届毕的自我评价
2013/12/27 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
个人贷款承诺书
2014/03/28 职场文书
学校读书活动总结
2014/06/30 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
小学同学聚会感言
2015/07/30 职场文书
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技