摘 composer的安装和使用知识整理
用composer的时候发现还是要学下 20200406
composer安装和使用的内容不是很多,慢慢写就写完了,O(∩_∩)O哈哈~ 20220524
如何安装 Composer
安装前请务必确保已经正确安装了PHP。打开命令行窗口并执行php -v查看是否正确输出版本号。
打开命令行并依次执行下列命令安装最新版本的 Composer:
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
执行第一条命令下载下来的composer-setup.php脚本将简单地检测php.ini中的参数设置,如果某些参数未正确设置则会给出警告;然后下载最新版本的composer.phar文件到当前目录。
上述 3 条命令的作用依次是:
下载安装脚本 -composer-setup.php- 到当前目录。
执行安装过程。
删除安装脚本。
局部安装
上述下载 Composer 的过程正确执行完毕后,可以将composer.phar文件复制到任意目录(比如项目根目录下),然后通过php composer.phar指令即可使用 Composer 了!
全局安装
全局安装是将 Composer 安装到系统环境变量PATH所包含的路径下面,然后就能够在命令行窗口中直接执行composer命令了。
Mac 或 Linux 系统:
打开命令行窗口并执行如下命令将前面下载的composer.phar文件移动到/usr/local/bin/目录下面:
sudo mv composer.phar /usr/local/bin/composer
之后执行
composer -V
查看版本
Composer version 2.3.5 2022-04-13 16:43:00
Windows 系统:
找到并进入 PHP 的安装目录(和你在命令行中执行的php指令应该是同一套 PHP)。
将composer.phar复制到 PHP 的安装目录下面,也就是和php.exe在同一级目录。
在 PHP 安装目录下新建一个composer.bat文件,并将下列代码保存到此文件中。
@php "%~dp0composer.phar" %*
最后重新打开一个命令行窗口试一试执行composer --version看看是否正确输出版本号。 ...
|-原 解决Yii2里引入自定义文件 composer dump-autoload后报错:Composer detected issues in your platform: Your Composer dependencies require
composer dump-autoload 后报错,Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.0.0".
想在Yii2里引入新的自定义文件,结果发现引入的文件中的函数不被调用,于是网上查了下,说是用
composer dump-autoload
结果运行完后,正常执行了
Generating autoload files Generated autoload files
访问项目发现所有页面都打不开了,报错提示:Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.0.0". ...
|-转 Windows环境下Composer的安装教程遇到的问题及解决方法
在Windows环境下安装Composer,遇到的问题及解决方案
1.设置了安装路径以及选择了php.exe后,最终安装的时候一直在那等候,不进入真正的安装!
解决方法:我这里选择的php.exe是共用人家phpstudy的php版本,之所以安装一直不进行,就
是因为phpstudy打开着,进程处于占用状态,当把phpstudy关闭后,安装正常!
2.composer安装成功后,在命令提示符里输入composer命令,仍然提示composer不是内部命令
解决方法:这是因为在安装composer后,必须新打开一个命令提示符,而我之前还是在安装composer
前的命令提示符窗口里进行,所以提示有误!
3.在Windows环境下安装Composer(注:Composer要求PHP版本在5.3.2+),你可能会遇到这种安装失败的情况:
出错信息是 "The openssl extension is missing, which will reduce the security and stability of
Composer. If possible you should enable it or recompile php with --with-openssl" ,大意就是你的PHP缺少openssl扩展。
在php的安装目录比如说C:\wamp\bin\php\php5.3.3\中,找到找个目录下的php.ini文件,然后去掉 extension=php_openssl.dll
这一行开头的注释,之后就可以顺利安装Composer了。
4:遇到的问题
在使用composer install 报如下错误的,一般是缺少 php 的扩展,解决方案,
安装php的扩展
例如
cd /usr/local/php/lib
yum install php-mbstring
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for php-amqplib/php-amqplib v2.7.0 -> satisfiable by php-amqplib/php-amqplib[v2.7.0].
- php-amqplib/php-amqplib v2.7.0 requires ext-bcmath * -> the requested PHP extension bcmath is missing from your system.
Problem 2
- php-amqplib/php-amqplib v2.7.0 requires ext-bcmath * -> the requested PHP extension bcmath is missing from your system.
- php-amqplib/thumper v0.5.0 requires php-amqplib/php-amqplib ^2.6 -> satisfiable by php-amqplib/php-amqplib[v2.7.0].
- Installation request for php-amqplib/thumper v0.5.0 -> satisfiable by php-amqplib/thumper[v0.5.0].
To enable extensions, verify that they are enabled in your .ini files:
- /etc/php.ini
- /etc/php.d/curl.ini
- /etc/php.d/fileinfo.ini
- /etc/php.d/json.ini
- /etc/php.d/phar.ini
- /etc/php.d/zip.ini ...
|-转 Packagist.org 明确了 Composer 1.x 被弃用的时间表
2021-02-25
地球人都知道,Composer 2.0已于 2020 年 10 月下旬发布。我们在发布公告中已经暗示 Composer 1.x 的生命周期即将结束,不过,今天我们将 Packagist.org 对 Composer 1.x 的支持期限(以前所设想的)稍做一下延长。
首先,我们在过去的几个月中意识到 Composer 1.x 可能要存在数年才能完全消失。 Composer 被安装在太多地方了,因此我们将必须长时间保持对 v1 版元数据的支持(以保证 Composer 1.x 正常运行),以防止干扰用户现有的工作流程。
但是,我们遇到的最大障碍是:由于 v1 版元数据所使用的格式的限制,因此要占用 packagist.org 的很多资源才能将其转储到静态 JSON 文件中。 因此,我们采取了两个步骤来减少其对我们的基础架构的负面影响:
从 2021 年 5 月开始降低 v1 版元数据 API 的更新频率
所有软件包(package)的新版本的更新频率将从当前的每分钟降低到每 15 分钟一次。这意味着新版本需要经过几分钟的时间才能用于 Composer 1.x 的安装。
从好的方面来看,降低 v1 版元数据的更新频率,意味着我们可以将 v2 版元数据的更新频率提升到秒级,而无须与 v1 版元数据的更新(分钟级)捆绑在一起。
从 2021 年 5 月开始,限制通过 v1 版元数据 API 访问未使用的软件包
我们面临的另一个问题是:我们目前需要处理 300,000 个软件包、2,700,000 个版本的同步,而 v1 格式使用了很长的文件列表,这意味着软件包的数量对处理流程的影响很大。...
|-转 慎用composer update
不出问题还好,出了问题一堆事情
https://blog.csdn.net/wulove52/article/details/78392663
问题说明
我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的:
composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害。
因为 composer update 的逻辑是按照 composer.json 指定的扩展包版本规则,把所有扩展包更新到最新版本,注意,是 所有扩展包,举个例子,你在项目一开始的时候使用了 monolog,当时的配置信息是
"monolog/monolog": "1.*",
安装的是 monolog 1.1 版本,而一个多月以后的现在,monolog 已经是 1.2 了,运行命令后直接更新到 1.2,这时项目并没有针对 1.2 进行过测试,项目一下子变得很不稳定,情况有时候会比这个更糟糕,尤其是在一个庞大的项目中,你没有对项目写完整覆盖测试的情况,什么东西坏掉了你都不知道。
那应该使用哪个命令呢?install, update 还是 require ?
接下来我们一一解释。
简单解释
package - 从 composer.json 或者对应包的配置,并更新到最新; new/package - 添加安装 new/package, 可以指定版本,如: composer require new/package ~2.5.
流程
下来介绍几个日常生产的流程,来方便加深大家的理解。
流程一:新项目流程
创建 composer.json,并添加依赖到的扩展包;
运行 composer install,安装扩展包并生成 composer.lock;
提交 composer.lock 到代码版本控制器中,如:git;
流程二:项目协作者安装现有项目
克隆项目后,根目录下直接运行 composer install 从 composer.lock 中安装 指定版本 的扩展包以及其依赖;
...
|-转 Could not open input file: composer.phar报错
今天使用composer下载yii报错提示 Could not open input file: composer.phar
原因肯定是:在别的项目下载过composer没有设置全局变量或者没有安装composer
解决:
打开命令行并依次执行下列命令安装最新版本的 Composer:
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');"
原文链接:https://blog.csdn.net/jizha1917/article/details/94245063...
|-原 composer在国内使用效果很差,总提示没有找到要下载的文件
建议直接在国外的服务器上先把要下的项目下好,然后在传到本地
composer在国内使用效果很差,总提示没有找到要下载的文件。建议直接在国外的服务器上先把要下的项目下好,然后在传到本地。各种报错都没了。...
|-转 compser安装后无法使用,php7.4版本下安装的
|-转 win10系统 安装好composer后 cmd 命令行下输入composer提示不是内部或外部的命令,也不是可执行的程序或批处理文件
在 windows CMD 下运行composer 出现错误提示: 不是内部或外部命令,也不是可运行的程序或批处理文件,这是因为没有配置 PATH 环境变量。
以 win10 为例,找到此电脑
右击选择属性,点击左侧的高级系统设置
,选择高级
>环境变量
弹出环境变量
窗口,找到PATH
,点击编辑
...
|-转 使用composer安装项目需要注意的
全局改为国内镜像命令:composer config -g repo.packagist composer https://packagist.phpcomposer.com,之后解决composer install遇到:Your requirements could not be resolved to an installable set of packages.方法:解决办法:直接忽略版本
composer install --ignore-platform-reqs 或者 composer update --ignore-platform-reqs
在国内本地测试时,因为网络的原因,composer install和update很难,会各种报错
所以建议切换成国内镜像
composer 默认地址改为中国镜像地址,以及中国镜像地址还原成默认地址
一、查看当前镜像地址
在命令行输入如下命令,即可查看全局镜像地址:
复制代码
$ composer config -g repo.packagist { "type":"composer", "url":"https://packagist.org", "allow_ssl_downgrade":true }
下面有把地址修改为中国镜像,如果中国镜像出现了问题,那么您可以还原成官方的默认地址,下面是详细。
二、启用中国全量镜像服务:
启用中国全量镜像服务有两种方式,具体配置方法如下:
1.系统全局配置:
可以使用 composer config -l -g 查看所有全局配置
composer config -l -g
使用如下命令将地址改为中国镜像地址:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
镜像名
地址
赞助商
更新频率
备注
阿里云 Composer 镜像
https://mirrors.aliyun.com/composer/
阿里云
96 秒
推荐
腾讯云 Composer 镜像
https://mirrors.cloud.tencent.com/composer/
腾讯云
24 小时
-
PHP 国内 Composer 镜像
https://packagist.phpcomposer.com
仁润股份
24 小时
不稳定
华为云 Composer 镜像
https://repo.huaweicloud.com/repository/php/
华为云
未知
未知...
|-摘 composer 设置Github全局 token,在所有项目上都使用阿里云镜像
composer引入GitHub上项目是需要使用token
如果想要以后都不用输入这个token,可以通过全局设置的办法解决,命令如下:
composer config --global github-oauth.github.com <token>
OK了 ...
|-转 composer.json 变更autoload files后要怎么操作
composer self-update --rollback
当您修改了 composer.json 文件中的自动加载文件(autoload files)部分后,需要执行以下步骤来使其生效:
- 检查并保存修改:确保您已正确编辑了 composer.json 文件,并对自动加载文件部分进行了所需的更改。请注意,路径应该相对于项目根目录。
- 运行 composer dumpautoload:在命令行界面中,进入项目目录,并运行以下命令:
composer dumpautoload
这将重新生成自动加载所需的类映射文件(classmap),以便 Composer 可以正确加载和自动加载您指定的文件。
- 等待生成完成:等待 Composer 完成重新生成自动加载文件的过程。这通常很快,并且不会涉及任何下载或安装操作。
- 验证自动加载生效:确认自动加载文件已成功更新。您可以检查终端输出,确保没有生成任何错误。还可以尝试在代码中使用新添加或修改的自动加载文件中的类或函数,验证其是否可以正常工作。
需要注意的是,composer dumpautoload 命令会生成一个新的自动加载文件,并将其保存在 vendor/autoload.php 中。因此,确保您的项目中的其他文件都使用了正确的自动加载文件路径。...
|-原 composer 在国内现在在是太难用了 20231120
composer 在国内现在在是太难用了
不知道是哪个环节出了问题
如果您在中国使用 Composer 时遇到下载速度较慢或连接问题,可以使用中国的 Composer 镜像来加快下载速度。以下是一些常用的中国 Composer 镜像:
https://mirrors.aliyun.com/composer/
https://packagist.phpcomposer.com
https://mirrors.cloud.tencent.com/composer/ ...
|-转 Call to undefined function Composer\XdebugHandler\putenv() in phar 运行composer命令报错
这个报错意味着您的PHP环境中缺少了putenv()函数所需的扩展或配置。
putenv()函数是PHP的一个内置函数,用于设置环境变量。它通常是PHP的一部分,因此出现这个错误可能表示您的PHP环境未正确配置或缺少必要的扩展。
有几种可能的解决方法:
- 确保已安装必要的PHP扩展:检查您的PHP安装并确保已安装ext扩展中的putenv模块。您可以在PHP的php.ini文件中查找以下扩展配置项,确保其前面没有被注释掉:
extension=ext_putenv.so ; for UNIX-like systems ; extension=php_putenv.dll ; for Windows systems
- 检查Composer依赖:如果您正在使用Composer进行项目管理,并且遇到了这个错误,可能是由于Composer依赖冲突导致的。尝试在项目根目录下运行以下命令来更新Composer依赖:
composer update
这将会根据项目的composer.json文件更新所有依赖。...
|-转 composer update 由于目标计算 机积极拒绝,无法连接。
解决方法:去除环境变量中的代理http_proxy 127.0.0.1:53374设置重新安装composer,安装时不要勾选代理在命令面板用composer -v查看是否安装成功_composer 由于目标计算机积极拒绝,无法连接...
|-转 解决composer update出现的Discard changes [y,n,v,d,s,?]的问题
在PHP项目中,composer是一个使用非常普遍的包管理工具,在本地开发的时候出现了这个问题一搬来说问题不大,可以人为进行输入交互,但是如果是自动化发布中出现,就会等待输入导致卡住,是一个需要解决的问题。
表现
当执行composer update的时候具体体现如下,这个时候就出现了发布等待。
解决办法
一般来说,都是依赖的外部包,所以正常情况下都是选择直接覆盖(Discard changes)。有如下两种处理方式。方式1: 全局设置 discard-changes true...