跳转到内容

命令行界面 / 命令

你已经学习了如何使用命令行界面来做一些事情。本章记录了所有可用的命令。

要从命令行获取帮助,请调用composercomposer list查看完整的命令列表,然后将--help与其中任何命令结合使用,即可获得更多信息。

由于 Composer 使用 symfony/console,因此如果命令名称不存在歧义,你可以通过短名称来调用命令。

php composer.phar dump

调用composer dump-autoload

要安装bash补全功能,你可以运行composer completion bash > completion.bash。这将在当前目录中创建一个completion.bash文件。

然后执行source completion.bash以在当前终端会话中启用它。

completion.bash文件移动并重新命名为/etc/bash_completion.d/composer,使其在新终端中自动加载。

以下选项适用于所有命令:

  • —verbose(-v): 提高消息的详细程度。
  • **—help(-h):**显示帮助信息。
  • **—quiet(-q):**不输出任何消息。
  • **—no-interaction (-n):**不询问任何交互式问题。
  • —no-plugins: 禁用插件。
  • —no-scripts: 跳过执行在composer.json中定义的脚本。
  • **—no-cache:**禁用缓存目录的使用。与将COMPOSER_CACHE_DIR环境变量设置为/dev/null(在Windows上为NUL)相同。
  • —working-dir(-d): 若指定,则使用给定目录作为工作目录。
  • —profile: 显示计时和内存使用信息
  • —ansi: 强制ANSI输出。
  • **—no-ansi:**禁用ANSI输出。
  • **—version (-V):**显示此应用程序版本。
  • 0: 正常
  • 1: 通用/未知错误代码
  • 2: 依赖项解决错误代码

这一章中,我们了解了如何手动创建composer.json文件。此外,还有一个init命令可以用来完成这项工作。

运行该命令时,它会交互式地要求你填写各个字段,同时使用一些智能默认值。

php composer.phar init
  • —name: 包的名称。
  • —description: 包的描述。
  • —author: 包的作者名称。
  • —type: 包的类型。
  • —homepage: 包的主页。
  • **—require:**需要带有版本约束的包。格式应为foo/bar:1.0.0
  • —require-dev:开发需求,参见—require
  • —stability(-s):minimum-stability字段的值。
  • **—license (-l):**包的许可证。
  • **—repository:**提供一个(或多个)自定义仓库。它们将被存储在生成的composer.json中,并在提示需要的列表时用于自动补全。每个仓库可以是指向composer仓库的HTTP URL,也可以是类似于repositories键所接受的JSON字符串。
  • —autoload(-a): 向composer.json添加PSR-4自动加载映射。自动将你的包的命名空间映射到提供的目录。(需相对路径,例如src/)另见PSR-4自动加载

install命令从当前目录读取composer.json文件,解析依赖项,并将它们安装到vendor中。

php composer.phar install

如果当前目录中有一个composer.lock文件,它将使用该文件中的精确版本,而不是重新解析版本。这确保了所有使用该库的人都能获得相同版本的依赖项。

如果没有composer.lock文件,Composer会在依赖项解析后创建一个。

  • **—prefer-install:**下载包有两种方式:sourcedist。Composer默认使用dist。如果您传递--prefer-install=source(或--prefer-source),若存在源代码,Composer将从source进行安装。如果您想对某个项目进行错误修复并直接获取依赖项的本地git克隆,这会很有用。 要获得Composer会自动对包的开发版本使用source的旧有行为,请使用--prefer-install=auto。另请参阅config.preferred-install。 传递此标志将覆盖配置值。
  • **—dry-run:**如果你想执行安装过程但不实际安装软件包,可以使用--dry-run。这将模拟安装并向你展示会发生什么。
  • —download-only: 仅下载,不安装包。
  • **—dev:**安装require-dev中列出的包(这是默认行为)。
  • —no-dev: 跳过安装require-dev中列出的包。自动加载器生成会跳过autoload-dev规则。另请参见COMPOSER_NO_DEV
  • —no-autoloader: 跳过自动加载器生成。
  • **—no-progress:**移除进度显示,该显示可能会干扰某些不处理退格字符的终端或脚本。
  • —audit: 安装完成后运行审计。
  • **—audit-format:**审计输出格式。必须为“table”“plain”“json”或“summary”(默认值)。
  • **—optimize-autoloader(-o):**将PSR-0/4自动加载转换为类映射,以获得更快的自动加载器。这尤其推荐在生产环境中使用,但运行可能需要一点时间,因此目前默认不执行此操作。
  • **—classmap-authoritative(-a):**仅从类映射自动加载类。隐式启用--optimize-autoloader
  • —apcu-autoloader: 使用APCu缓存已找到/未找到的类。
  • **—apcu-autoloader-prefix:**为APCu自动加载器缓存使用自定义前缀。会默认启用--apcu-autoloader
  • **—ignore-platform-reqs:**忽略所有平台要求(phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制安装。另请参见platform配置选项。
  • **—ignore-platform-req:**忽略特定的平台要求(phphhvmlib-*ext-*),即使本地机器不满足该要求,也强制进行安装。可以通过通配符忽略多个要求。添加+仅忽略要求的上限。例如,如果某个包要求php: ^7,那么使用选项--ignore-platform-req=php+将允许在PHP 8上安装,但在PHP 5.6上安装仍会失败。

为了获取依赖项的最新版本并更新composer.lock文件,你应该使用update命令。该命令也别名为upgrade,因为如果你想到apt-get或类似的包管理器,它的作用和upgrade是一样的。

php composer.phar update

这将解决项目的所有依赖项,并将确切版本写入composer.lock

如果你只想更新少数几个包而不是所有包,可以像这样列出它们:

php composer.phar update vendor/package vendor/package2

你也可以使用通配符一次性更新多个包:

php composer.phar update "vendor/*"

如果您想将某个包降级到特定版本而不修改您的composer.json,可以使用--with并提供自定义的版本约束:

php composer.phar update --with vendor/package:2.0.1

请注意,通过上述操作,所有包都将被更新。如果你只想更新那些你使用--with提供了自定义约束的包,你可以省略--with,转而使用带有部分更新语法的约束:

php composer.phar update vendor/package:2.0.1 vendor/package2:3.0.*

**注意:**对于在您的composer.json中也需要的包,自定义约束必须是现有约束的子集。composer.json约束仍然适用,且这些临时更新约束不会修改composer.json。

  • —prefer-install: 下载包有两种方式:sourcedist。Composer 默认使用dist。如果传递--prefer-install=source(或--prefer-source),若存在源代码,Composer 将从source进行安装。如果你想对某个项目进行漏洞修复,并直接获取依赖项的本地 git 克隆,这会很有用。 若要获得 Composer 自动为包的开发版本使用source的旧有行为,请使用--prefer-install=auto。另请参阅config.preferred-install。传递此标志将覆盖配置值。
  • —dry-run: 模拟命令执行,但不实际进行任何操作。
  • —dev: 安装 require-dev 中列出的包(这是默认行为)。
  • —no-dev: 跳过安装 require-dev 中列出的包。自动加载器生成会跳过 autoload-dev 规则。另请参见 COMPOSER_NO_DEV
  • —no-install: 更新composer.lock文件后不运行安装步骤。
  • **—no-audit:**更新composer.lock文件后不运行审计步骤。另请参见COMPOSER_NO_AUDIT
  • **—audit-format:**审计输出格式。必须为“table”“plain”“json”或“summary”(默认值)。
  • **—no-security-blocking:**允许安装存在安全公告或已废弃的包。另请参阅COMPOSER_NO_SECURITY_BLOCKING
  • —lock: 覆盖锁定文件哈希,以抑制关于锁定文件过时的警告,而不更新包版本。如果包的元数据(如镜像和URL)发生了变化,则会更新它们。
  • —with: 要添加的临时版本约束,例如 foo/bar:1.0.0 或 foo/bar=1.0.0
  • —no-autoloader: 跳过自动加载器生成。
  • —no-progress: 移除进度显示,该显示可能会干扰某些终端或不处理退格字符的脚本。
  • —with-dependencies (-w): 同时更新参数列表中包的依赖项,但根需求除外。也可通过环境变量 COMPOSER_WITH_DEPENDENCIES=1 进行设置。
  • —with-all-dependencies(-W): 同时更新参数列表中包的依赖项,包括那些作为根要求的依赖项。也可以通过环境变量COMPOSER_WITH_ALL_DEPENDENCIES=1进行设置。
  • **—optimize-autoloader(-o):**将PSR-0/4自动加载转换为类映射,以获得更快的自动加载器。这尤其推荐在生产环境中使用,但运行可能需要一点时间,因此目前默认不执行此操作。
  • **—classmap-authoritative (-a):**仅从类映射自动加载类。隐式启用--optimize-autoloader
  • —apcu-autoloader: 使用APCu缓存已找到/未找到的类。
  • **—apcu-autoloader-prefix:**为APCu自动加载器缓存使用自定义前缀。会默认启用--apcu-autoloader
  • **—ignore-platform-reqs:**忽略所有平台要求(phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制安装。另请参阅platform配置选项。
  • **—ignore-platform-req:**忽略特定的平台要求(phphhvmlib-*ext-*),即使本地机器不满足该要求,也强制进行安装。可以通过通配符忽略多个要求。添加+只会忽略要求的上限。例如,如果某个包要求php: ^7</b6,那么选项--ignore-platform-req=php+将允许在PHP 8上安装,但在PHP 5.6上安装仍会失败。
  • —prefer-stable: 优先选择依赖项的稳定版本。也可以通过 COMPOSER_PREFER_STABLE=1 环境变量进行设置。
  • —prefer-lowest: 优先选择依赖项的最低版本。适用于测试需求的最低版本,通常与--prefer-stable一起使用。也可以通过COMPOSER_PREFER_LOWEST=1环境变量进行设置。
  • —minimal-changes(-m): 仅对依赖项进行绝对必要的更改。如果无法将包保持在其当前锁定的版本,则会对其进行更新。对于部分更新,允许列表中的包始终会被完全更新。也可以通过 COMPOSER_MINIMAL_CHANGES=1 环境变量进行设置。
  • —patch-only: 仅允许对当前已安装的依赖项进行补丁版本更新。
  • —interactive: 具有自动补全功能的交互式界面,用于选择要更新的包。
  • —root-reqs: 将更新限制为你的一级依赖项。
  • —bump-after-update: 执行更新后运行bump。设置为devno-dev以仅更新那些依赖项。

指定mirrorslocknothing中的一个单词作为参数,其效果与指定选项--lock相同,例如composer update mirrorscomposer update --lock完全一致。

require命令会将新包添加到当前目录的composer.json文件中。如果该文件不存在,将会动态创建一个。

如果你不指定一个包,Composer会提示你搜索包,并根据给出的结果,提供一份需要安装的匹配项列表。

php composer.phar require

添加或更改需求后,修改后的需求将被安装或更新。

如果你不想以交互方式选择依赖项,可以将它们传递给该命令。

php composer.phar require "vendor/package:2.*" vendor/package2:dev-master

如果你不指定版本约束,Composer 将根据可用的包版本选择一个合适的版本。

php composer.phar require vendor/package vendor/package2

如果您不想立即安装新的依赖项,可以使用 —no-update 来调用该命令。

  • **—dev:**将包添加到require-dev中。
  • —dry-run: 模拟命令执行,但不实际进行任何操作。
  • **—prefer-install:**下载包有两种方式:sourcedist。Composer默认使用dist。如果传递--prefer-install=source(或--prefer-source),若存在源代码,Composer将从source进行安装。如果你想对某个项目进行漏洞修复,并直接获取依赖项的本地git克隆,这会很有用。 要获得Composer自动对包的开发版本使用source的旧有行为,请使用--prefer-install=auto。另请参阅config.preferred-install。传递此标志将覆盖配置值。
  • **—no-progress:**移除进度显示,该显示可能会干扰某些不处理退格字符的终端或脚本。
  • —no-update: 禁用依赖项的自动更新(意味着—no-install)。
  • —no-install: 更新composer.lock文件后不运行安装步骤。
  • **—no-audit:**更新composer.lock文件后不运行审核步骤。另请参见COMPOSER_NO_AUDIT
  • —audit-format: 审计输出格式。必须是“table”“plain”“json”或“summary”(默认值)。
  • **—no-security-blocking:**允许安装带有安全公告或已废弃的包。另请参阅COMPOSER_NO_SECURITY_BLOCKING
  • **—update-no-dev:**使用--no-dev选项运行依赖项更新。另请参阅COMPOSER_NO_DEV
  • —update-with-dependencies (-w): 同时更新新需要的包的依赖项,但根依赖项除外。也可通过环境变量 COMPOSER_WITH_DEPENDENCIES=1 进行设置。
  • —update-with-all-dependencies(-W): 同时更新新需要的包的依赖项,包括那些作为根需求的依赖项。也可以通过环境变量COMPOSER_WITH_ALL_DEPENDENCIES=1进行设置。
  • **—ignore-platform-reqs:**忽略所有平台要求(phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制进行安装。另请参阅platform配置选项。
  • **—ignore-platform-req:**忽略特定的平台要求(phphhvmlib-*ext-*),即使本地机器不满足该要求,也强制进行安装。可以通过通配符忽略多个要求。
  • —prefer-stable: 优先选择依赖项的稳定版本。也可通过 COMPOSER_PREFER_STABLE=1 环境变量进行设置。
  • —prefer-lowest: 优先选择依赖项的最低版本。用于测试需求的最低版本,通常与--prefer-stable一起使用。也可以通过COMPOSER_PREFER_LOWEST=1环境变量进行设置。
  • **—minimal-changes(-m):**在使用-w/-W进行更新时,仅对间接依赖项执行绝对必要的更改。也可通过环境变量COMPOSER_MINIMAL_CHANGES=1进行设置。
  • —sort-packages: 保持包在composer.json中有序排列。
  • **—optimize-autoloader(-o):**将PSR-0/4自动加载转换为类映射,以获得更快的自动加载器。这尤其推荐在生产环境中使用,但运行可能需要一点时间,因此目前默认不执行此操作。
  • **—classmap-authoritative(-a):**仅从类映射自动加载类。默认启用--optimize-autoloader
  • —apcu-autoloader: 使用APCu缓存已找到/未找到的类。
  • **—apcu-autoloader-prefix:**为APCu自动加载器缓存使用自定义前缀。默认启用--apcu-autoloader

remove命令从当前目录的composer.json文件中移除包。

php composer.phar remove vendor/package vendor/package2

移除依赖项后,修改后的依赖项将被卸载。

  • **—unused:**移除不再是直接或间接依赖项的未使用包。
  • **—dev:**从require-dev中移除包。
  • —dry-run: 模拟执行命令,但不实际进行任何操作。
  • —no-progress: 移除进度显示,该显示可能会干扰某些不处理退格字符的终端或脚本。
  • —no-update: 禁用依赖项的自动更新(隐含—no-install)。
  • **—no-install:**更新composer.lock文件后不运行安装步骤。
  • —no-audit: 安装完成后不运行审计步骤。另请参见 COMPOSER_NO_AUDIT
  • **—audit-format:**审计输出格式。必须为“table”“plain”“json”或“summary”(默认值)。
  • **—no-security-blocking:**允许安装带有安全公告或已废弃的包。另请参见COMPOSER_NO_SECURITY_BLOCKING
  • —update-no-dev: 使用 —no-dev 选项运行依赖项更新。另请参阅 COMPOSER_NO_DEV
  • —update-with-dependencies(-w): 同时更新已移除包的依赖项。也可通过环境变量COMPOSER_WITH_DEPENDENCIES=1进行设置。(已弃用,现为默认行为)
  • —update-with-all-dependencies(-W): 允许更新所有继承的依赖项,包括那些作为根要求的依赖项。也可以通过环境变量 COMPOSER_WITH_ALL_DEPENDENCIES=1 进行设置。
  • **—minimal-changes(-m):**在使用-w/-W进行更新时,仅对间接依赖项执行绝对必要的更改。也可通过环境变量COMPOSER_MINIMAL_CHANGES=1进行设置。
  • **—ignore-platform-reqs:**忽略所有平台要求(phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制进行安装。另请参阅platform配置选项。
  • **—ignore-platform-req:**忽略特定的平台要求(phphhvmlib-*ext-*),即使本地机器不满足该要求,也强制进行安装。可通过通配符忽略多个要求。
  • **—optimize-autoloader(-o):**将PSR-0/4自动加载转换为类映射,以获得更快的自动加载器。这尤其推荐在生产环境中使用,但运行可能需要一点时间,因此目前默认不执行此操作。
  • **—classmap-authoritative(-a):**仅从类映射自动加载类。隐式启用--optimize-autoloader
  • —apcu-autoloader: 使用APCu缓存已找到/未找到的类。
  • —apcu-autoloader-prefix: 为APCu自动加载器缓存使用自定义前缀。默认启用--apcu-autoloader

bump命令会将composer.json中依赖项的下限提高到当前已安装的版本。这有助于确保你的依赖项不会因其他冲突而意外降级,并且由于它限制了Composer必须查看的包版本数量,还能略微提高依赖项解析性能。

不建议在库上盲目运行此操作,因为这会缩小您允许的依赖范围,可能会给您的用户带来依赖地狱问题。不过,在库上使用--dev-only运行可能没问题,因为开发需求是库本地的,不会影响包的使用者。

  • **—dev-only:**仅更新“require-dev”中的依赖要求。
  • —no-dev-only: 仅更新“require”中的依赖要求。
  • **—dry-run:**输出要升级的包,但不会执行任何操作。

reinstall命令会按名称查找已安装的软件包,将其卸载后重新安装。如果您弄乱了某个软件包的文件,或者希望使用—prefer-install更改安装类型,此命令可以让您执行该软件包的全新安装。

php composer.phar reinstall acme/foo acme/bar

你可以指定多个包名进行重新安装,或者使用通配符一次性选择多个包:

php composer.phar reinstall "acme/*"
  • —prefer-install: 下载包有两种方式:sourcedist。Composer 默认使用dist。如果传递--prefer-install=source(或--prefer-source),若存在源代码,Composer 将从source进行安装。如果你想对某个项目进行漏洞修复,并直接获取依赖项的本地 git 克隆,这会很有用。 若要获得 Composer 自动对包的开发版本使用source的旧有行为,请使用--prefer-install=auto。另请参阅config.preferred-install。传递此标志将覆盖配置值。
  • —no-autoloader: 跳过自动加载器生成。
  • **—no-progress:**移除进度显示,该显示可能会干扰某些不处理退格字符的终端或脚本。
  • **—optimize-autoloader(-o):**将PSR-0/4自动加载转换为类映射,以获得更快的自动加载器。这尤其推荐在生产环境中使用,但运行可能需要一点时间,因此目前默认不执行此操作。
  • **—classmap-authoritative(-a):**仅从类映射自动加载类。隐式启用--optimize-autoloader
  • —apcu-autoloader: 使用APCu缓存已找到/未找到的类。
  • **—apcu-autoloader-prefix:**为APCu自动加载器缓存使用自定义前缀。默认启用--apcu-autoloader
  • **—ignore-platform-reqs:**忽略所有平台要求。这仅在为重新安装命令生成自动加载器的情况下有效。
  • **—ignore-platform-req:**忽略特定的平台要求。这仅在为重新安装命令生成自动加载器的情况下有效。可以通过通配符忽略多个要求。

check-platform-reqs命令会检查您的PHP和扩展版本是否与已安装包的平台要求相匹配。例如,这可用于在安装项目后验证生产服务器是否具备运行该项目所需的所有扩展。

与更新/安装不同,此命令将忽略config.platform设置,并检查实际的平台包,因此您可以确定自己拥有所需的平台依赖项。

  • —lock: 仅从锁定文件检查要求,而非从已安装的包中检查。
  • **—no-dev:**禁用对require-dev包要求的检查。
  • **—format(-f):**输出格式:文本(默认)或json

global命令允许你运行其他命令,如installremoverequireupdate,就好像你是从COMPOSER_HOME目录运行它们一样。

这仅仅是一个助手,用于管理存储在中央位置的项目,该位置可以存放你希望在任何地方都能使用的命令行工具或Composer插件。

这可用于全局安装命令行界面工具。以下是一个示例:

php composer.phar global require friendsofphp/php-cs-fixer

现在,php-cs-fixer二进制文件已在全局可用。请确保你的全局供应商二进制文件目录位于你的$PATH环境变量中,你可以通过以下命令获取其位置:

php composer.phar global config bin-dir --absolute

如果您之后希望更新该二进制文件,可以运行全局更新:

php composer.phar global update

搜索命令允许你在当前项目的包仓库中进行搜索。通常这会是Packagist。你可以传入想要搜索的术语。

php composer.phar search monolog

你也可以通过传递多个参数来搜索多个术语。

  • **—only-name(-N):**仅在包名称中搜索。
  • **—only-vendor (-O):**仅搜索供应商/组织名称,结果仅返回“供应商”。
  • **—类型(-t):**搜索特定的包类型。
  • —format(-f): 允许您在文本(默认)或json输出格式之间进行选择。请注意,在json中,仅保证存在name和description键。其余的(urlrepositorydownloadsfavers)适用于Packagist.org的搜索结果,其他存储库可能返回或多或少的数据。

要列出所有可用的包,可以使用show命令。

php composer.phar show

要筛选列表,您可以使用通配符传递包掩码。

php composer.phar show "monolog/*"
monolog/monolog 2.4.0 Sends your logs to files, sockets, inboxes, databases and various web services

如果你想查看某个包的详细信息,可以传入包名。

php composer.phar show monolog/monolog
name : monolog/monolog
descrip. : Sends your logs to files, sockets, inboxes, databases and various web services
keywords : log, logging, psr-3
versions : * 1.27.1
type : library
license : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
homepage : http://github.com/Seldaek/monolog
source : [git] https://github.com/Seldaek/monolog.git 904713c5929655dc9b97288b69cfeedad610c9a1
dist : [zip] https://api.github.com/repos/Seldaek/monolog/zipball/904713c5929655dc9b97288b69cfeedad610c9a1 904713c5929655dc9b97288b69cfeedad610c9a1
names : monolog/monolog, psr/log-implementation
support
issues : https://github.com/Seldaek/monolog/issues
source : https://github.com/Seldaek/monolog/tree/1.27.1
autoload
psr-4
Monolog\ => src/Monolog
requires
php >=5.3.0
psr/log ~1.0

你甚至可以传入包的版本,这会告诉你该特定版本的详细信息。

php composer.phar show monolog/monolog 1.0.2
  • **—all:**列出所有仓库中可用的所有包。
  • **—installed(-i):**列出已安装的包(默认启用,且已弃用)。
  • **—locked:**从composer.lock中列出锁定的包。
  • **—platform(-p):**仅列出平台包(php及扩展)。
  • **—available(-a):**仅列出可用的包。
  • **—self(-s):**列出根包信息。
  • **—name-only (-N):**仅列出包名称。
  • **—path(-P):**列出包路径。
  • —tree(-t): 以树形结构列出依赖项。如果传入包名,将显示该包的依赖树。
  • **—latest(-l):**列出所有已安装的包,包括它们的最新版本。
  • —outdated(-o): 隐含 —latest,但仅列出有更新版本可用的那些软件包。
  • —ignore: 忽略指定的包。可包含通配符(*)。如果不希望收到某些包的新版本通知,请与 —outdated 选项一起使用。
  • **—no-dev:**从包列表中过滤开发依赖项。
  • —major-only(-M): 与 —latest 或 —outdated 一同使用。仅显示具有主要 SemVer 兼容更新的包。
  • —minor-only(-m): 与 —latest 或 —outdated 一起使用。仅显示具有次要 SemVer 兼容更新的包。
  • —patch-only: 与 —latest 或 —outdated 一同使用。仅显示具有补丁级 SemVer 兼容更新的包。
  • —sort-by-age(-A): 显示已安装版本的存在时间,并按软件包从最旧到最新的顺序排序。需与 —latest 或 —outdated 选项一起使用。
  • **—direct(-D):**将软件包列表限制为你的直接依赖项。
  • **—strict:**当存在过时的包时,返回非零退出代码。
  • —format(-f): 允许您在文本(默认)或json输出格式之间进行选择。
  • **—ignore-platform-reqs:**忽略所有平台要求(phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制进行安装。需与—outdated选项一起使用。
  • **—ignore-platform-req:**忽略特定的平台要求(phphhvmlib-*ext-*),即使本地机器不满足该要求,也强制进行安装。可通过通配符忽略多个要求。需与—outdated选项一起使用。

outdated 命令会显示有可用更新的已安装包列表,包括它们的当前版本和最新版本。这基本上是 composer show -lo 的别名。

颜色编码规则如下:

  • 绿色 (=):依赖项为最新版本且是最新的。
  • 黄色(~:根据语义化版本控制,该依赖项有包含向后兼容性中断的新版本可用,因此请尽可能升级,但这可能需要进行一些工作。
  • 红色 (!):依赖项有一个符合语义化版本规范的新版本,你应该进行升级。
  • —all(-a): 显示所有包,而不仅仅是过时的包(composer show --latest 的别名)。
  • **—direct(-D):**将包列表限制为您的直接依赖项。
  • **—strict:**如果有任何包过时,返回非零退出代码。
  • —ignore: 忽略指定的包。可包含通配符(*)。如果不希望收到某些包的新版本通知,请使用此选项。
  • **—major-only(-M):**仅显示有主要SemVer兼容更新的包。
  • **—minor-only (-m):**仅显示具有次要SemVer兼容更新的包。
  • **—patch-only (-p):**仅显示具有补丁级SemVer兼容更新的包。
  • **—sort-by-age(-A):**显示已安装版本的使用时长,并按软件包从最旧到最新的顺序排序。
  • —format(-f): 允许您在文本(默认)或json输出格式之间进行选择。
  • —no-dev: 不显示过时的开发依赖项。
  • **—locked:**显示锁定文件中包的更新,无论供应商目录中当前有什么。
  • **—ignore-platform-reqs:**忽略所有平台要求(phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制进行安装。
  • **—ignore-platform-req:**忽略特定的平台要求(phphhvmlib-*ext-*),即使本地机器不满足该要求,也强制进行安装。可以通过通配符忽略多个要求。

browse(别名为home)会在你的浏览器中打开某个包的仓库URL或主页。

  • **—homepage(-H):**打开主页而非仓库URL。
  • **—show (-s):**仅显示主页或仓库URL。

列出当前已安装软件包集所推荐的所有软件包。你可以选择以供应商/软件包的格式传递一个或多个软件包名称,以将输出限制为仅这些软件包所提出的推荐。

使用—by-package(默认)或—by-suggestion标志,分别按提供推荐的软件包或被推荐的软件包对输出进行分组。 如果只需要被推荐的软件包名称列表,请使用—list。 —by-package: 按提供推荐的软件包分组输出(默认)。

—by-suggestion: 按被推荐的软件包分组输出。

—all: 显示所有依赖项的推荐,包括传递依赖项(默认情况下仅显示直接依赖项的推荐)。

—list: 仅显示被推荐的软件包名称列表。

—no-dev: 排除来自require-dev软件包的推荐。

列出当前已安装软件包集所建议的所有软件包。您可以选择以vendor/package的格式传递一个或多个软件包名称,以将输出限制为仅这些软件包所提出的建议。

使用--by-package(默认)或--by-suggestion标志,分别按提供建议的包或被建议的包对输出进行分组。

如果您只需要建议的包名称列表,请使用--list

  • —by-package: 按建议包对输出进行分组(默认)。
  • —by-suggestion: 按建议的包对输出进行分组。
  • **—all:**显示所有依赖项的建议,包括传递依赖项(默认情况下仅显示直接依赖项的建议)。
  • **—list:**仅显示建议的包名称列表。
  • **—no-dev:**排除来自require-dev包的建议。

了解如何为依赖项的维护提供资金支持。此列表包含已安装依赖项的所有资助链接。使用--format=json可获得机器可读的输出。

  • —format(-f): 允许您在文本(默认)或json输出格式之间进行选择。

“depends”命令会告诉你哪些其他包依赖于某个特定的包。与安装时一样,“require-dev”关系仅适用于根包。

php composer.phar depends doctrine/lexer
doctrine/annotations 1.13.3 requires doctrine/lexer (1.*)
doctrine/common 2.13.3 requires doctrine/lexer (^1.0)

你可以选择在包后面指定版本约束来限制搜索范围。

添加--tree-t标志以显示该包被依赖的递归树,例如:

php composer.phar depends psr/log -t
psr/log 1.1.4 Common interface for logging libraries
├──composer/composer 2.4.x-dev (requires psr/log ^1.0 || ^2.0 || ^3.0)
├──composer/composer dev-main (requires psr/log ^1.0 || ^2.0 || ^3.0)
├──composer/xdebug-handler 3.0.3 (requires psr/log ^1 || ^2 || ^3)
│ ├──composer/composer 2.4.x-dev (requires composer/xdebug-handler ^2.0.2 || ^3.0.3)
│ └──composer/composer dev-main (requires composer/xdebug-handler ^2.0.2 || ^3.0.3)
└──symfony/console v5.4.11 (conflicts psr/log >=3) (circular dependency aborted here)
  • **—recursive(-r):**递归解析至根包。
  • **—tree(-t):**将结果以嵌套树的形式打印,隐含-r。

“prohibits”命令会告知你哪些包在阻止某个特定包的安装。指定版本约束可以验证项目中是否能执行升级操作,如果不能,还会说明原因。请看以下示例:

php composer.phar prohibits symfony/symfony 3.1
laravel/framework v5.2.16 requires symfony/var-dumper (2.8.*|3.0.*)

请注意,您也可以指定平台要求,例如检查您是否可以将服务器升级到PHP 8.0:

php composer.phar prohibits php 8
doctrine/cache v1.6.0 requires php (~5.5|~7.0)
doctrine/common v2.6.1 requires php (~5.5|~7.0)
doctrine/instantiator 1.0.5 requires php (>=5.3,<8.0-DEV)

depends类似,您可以请求递归查找,这将列出所有依赖于导致冲突的包的包。

  • **—recursive(-r):**递归解析至根包。
  • **—tree(-t):**将结果以嵌套树的形式打印,隐含-r。

在提交您的composer.json文件(以及适用的composer.lock文件)之前,以及在标记发布版本之前,您应该始终运行validate命令。

它将检查您的composer.json是否有效。如果存在composer.lock,它还将检查该文件是否与composer.json保持同步。

php composer.phar validate
  • **—no-check-all:**如果composer.json中的要求使用未绑定或过于严格的版本约束,不发出警告。
  • **—no-check-lock:**如果composer.lock存在且不是最新版本,不发出错误。
  • —check-lock 检查锁定文件是否为最新版本(即使config.lock为false时也会检查)
  • —no-check-publish: 如果composer.json不适合作为包发布到Packagist但在其他方面有效,不发出错误。
  • —no-check-version: 如果存在版本字段,不发出错误。
  • —with-dependencies: 同时验证所有已安装依赖项的composer.json。
  • **—strict:**对于警告和错误均返回非零退出代码。

如果你经常需要修改依赖项的代码,并且这些依赖项是从源代码安装的,那么status命令可以让你检查其中任何一个是否有本地更改。

php composer.phar status

使用--verbose选项,您会获得更多关于所做更改的信息:

php composer.phar status -v
You have changes in the following dependencies:
vendor/seld/jsonlint:
M README.htmlown

要将Composer本身更新到最新版本,请运行self-update命令。它会用最新版本替换你的composer.phar

php composer.phar self-update

如果你想更新到特定版本,请指定该版本:

php composer.phar self-update 2.4.0-RC1

如果你已为整个系统安装了Composer(参见全局安装</b0),可能需要使用root权限运行该命令。

sudo -H composer self-update

如果Composer不是作为PHAR安装的,那么此命令不可用。(当Composer通过操作系统包管理器安装时,有时会出现这种情况。)

  • **—rollback (-r):**回滚到你安装过的上一个版本。
  • **—clean-backups:**在更新期间删除旧备份。这会使当前版本的Composer成为更新后唯一可用的备份。
  • —no-progress: 不输出下载进度。
  • —update-keys: 提示用户进行密钥更新。
  • —stable: 强制更新到稳定频道。
  • —preview: 强制更新到预览频道。
  • —snapshot: 强制更新到快照频道。
  • —1: 强制更新到稳定频道,但仅使用1.x版本
  • —2: 强制更新到稳定通道,但仅使用2.x版本
  • —set-channel-only: 仅将该频道设为默认频道,然后退出

config命令允许您在本地composer.json文件或全局config.json文件中编辑Composer的配置设置和仓库。

此外,它允许你编辑本地composer.json中的大多数属性。

php composer.phar config --list
config [options] [setting-key] [setting-value1] ... [setting-valueN]

setting-key 是一个配置选项名称,setting-value1 是一个配置值。对于可以接受值数组的设置(如 github-protocols),允许多个设置值参数。

你还可以编辑以下属性的值:

descriptionhomepagekeywordslicenseminimum-stabilitynameprefer-stabletypeversion

有关有效的配置选项,请参见配置章节。

  • —global(-g): 默认对位于$COMPOSER_HOME/config.json的全局配置文件进行操作。如果没有此选项,该命令将影响本地的composer.json文件或由--file指定的文件。
  • —editor(-e): 使用由EDITOR环境变量定义的文本编辑器打开本地的composer.json文件。如果使用--global选项,则会打开全局配置文件。
  • —auth(-a): 影响身份验证配置文件(仅用于 —editor)。
  • **—unset:**删除由setting-key命名的配置元素。
  • **—list(-l):**显示当前配置变量的列表。使用--global选项时,仅列出全局配置。
  • —file=”…” (-f): 操作特定文件而非composer.json。请注意,此选项不能与--global选项一起使用。
  • **—absolute:**在获取*-dir配置值时返回绝对路径,而非相对路径。
  • —json: 对设置值进行JSON解码,用于extra.*键。
  • —merge: 将设置值与当前值合并,需与 extra.* 键以及 --json 结合使用。
  • —append: 添加仓库时,将其追加(最低优先级)到现有仓库,而不是前置(最高优先级)。
  • —source: 显示配置值的加载来源。

除了修改配置部分外,config命令还支持通过以下方式对存储库部分进行更改:

php composer.phar config repositories.foo vcs https://github.com/foo/bar

如果您的仓库需要更多配置选项,您可以改为传递其JSON表示形式:

php composer.phar config repositories.foo '{"type": "vcs", "url": "http://svn.example.org/my-project/", "trunk-path": "master"}'

除了修改配置部分外,config命令还支持通过以下方式对额外部分进行修改:

php composer.phar config extra.foo.bar value

这些点表示数组嵌套,但最多允许3级深度。上面的设置会是"extra": { "foo": { "bar": "value" } }

如果您有复杂的值需要添加/修改,可以使用--json--merge标志将额外字段作为json进行编辑:

php composer.phar config --json extra.foo.bar '{"baz": true, "qux": []}'

repo 命令允许你管理 composer.json 中的仓库。它比使用 composer config repositories.* 来操作仓库配置更强大,因此推荐使用。有关可用类型和配置选项的详细信息,请参考 Repositories 文档。

repo [options] list
repo [options] add [repo-name] [repo-type] [url]
repo [options] add [repo-name] [json-repo-definition]
repo [options] remove [repo-name]
repo [options] set-url [repo-name] [url]
repo [options] get-url [repo-name]
repo [options] enable packagist.org
repo [options] disable packagist.org
  • **—global(-g):**用于修改全局的$COMPOSER_HOME/config.json
  • **—file(-f):**用于修改特定文件而非composer.json。
  • **—append:**用于添加优先级较低的仓库(默认情况下,仓库会被前置,因此比现有仓库具有更高的优先级)。
  • **—before:**在名为<name>的现有仓库之前插入新仓库。
  • **—after:**用于在名为<name>的现有仓库后插入新仓库。<name>必须与现有的仓库名称匹配。
php composer.phar repo list
php composer.phar repo add foo vcs https://github.com/acme/foo
php composer.phar repo add bar composer https://repo.packagist.com/bar
php composer.phar repo add zips '{"type":"artifact","url":"/path/to/dir/with/zips"}'
php composer.phar repo add baz vcs https://example.org --before foo
php composer.phar repo add qux vcs https://example.org --after bar
php composer.phar repo remove foo
php composer.phar repo set-url foo https://git.example.org/acme/foo
php composer.phar repo get-url foo
php composer.phar repo disable packagist.org
php composer.phar repo enable packagist.org

你可以使用Composer基于现有的包创建新项目。这相当于执行一次git克隆/Subversion检出,然后对依赖包执行composer install

这有几个应用场景:

  1. 你可以部署应用程序包。
  2. 例如,你可以检出任何包并开始开发补丁。
  3. 有多名开发人员参与的项目可以使用此功能来启动初始应用程序以进行开发。

要使用Composer创建新项目,你可以使用create-project命令。向该命令传入包名以及要创建项目的目录。你还可以提供版本作为第三个参数,否则将使用最新版本。

如果该目录当前不存在,将会在安装过程中创建。

php composer.phar create-project doctrine/orm path "2.2.*"

在已有composer.json文件的目录中,也可以不带参数运行该命令来初始化项目。

默认情况下,该命令会在packagist.org上检查包。

  • —stability(-s): 包的最低稳定性。默认为stable
  • —prefer-install: 下载包有两种方式:sourcedist。Composer 默认使用dist。如果传递--prefer-install=source(或--prefer-source),若存在源代码,Composer 将从source进行安装。如果你想对某个项目进行漏洞修复,并直接获取依赖项的本地 git 克隆,这会很有用。 若要恢复 Composer 自动为包的开发版本使用source的旧有行为,请使用--prefer-install=auto。另请参阅config.preferred-install。传递此标志将覆盖配置值。
  • **—repository:**提供一个自定义仓库来搜索包,它将替代packagist使用。可以是指向composer仓库的HTTP URL、本地packages.json文件的路径,或者类似于repositories键所接受的JSON字符串。你可以多次使用此选项来配置多个仓库。
  • **—add-repository:**在composer.json中添加自定义仓库。如果存在锁定文件,将会删除该锁定文件,并运行更新而非安装。
  • **—dev:**安装require-dev中列出的包。
  • —no-dev: 禁用 require-dev 包的安装。
  • —no-scripts: 禁用在根包中定义的脚本的执行。
  • —no-progress: 移除进度显示,该显示可能会干扰某些终端或不处理退格字符的脚本。
  • **—no-secure-http:**安装根包时临时禁用secure-http配置选项。请自行承担风险。使用此标志并非明智之举。
  • —keep-vcs: 跳过删除所创建项目的版本控制系统(VCS)元数据。如果在非交互模式下运行该命令,此选项通常很有用。
  • —remove-vcs: 强制移除版本控制系统元数据,不进行提示。
  • —no-install: 禁用供应商的安装。
  • —no-audit: 安装完成后不运行审计步骤。另请参见 COMPOSER_NO_AUDIT
  • —audit-format: 审计输出格式。必须是“table”、“plain”、“json”或“summary”(默认值)。
  • **—no-security-blocking:**允许安装带有安全公告或已废弃的包。另请参见COMPOSER_NO_SECURITY_BLOCKING
  • **—ignore-platform-reqs:**忽略所有平台要求(phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制进行安装。另请参阅platform配置选项。
  • **—ignore-platform-req:**忽略特定的平台要求(phphhvmlib-*ext-*),即使本地机器不满足该要求,也强制进行安装。可以通过通配符忽略多个要求。
  • —ask: 请用户为新项目提供一个目标目录。

例如,如果由于类映射包中出现了新类而需要更新自动加载器,您可以使用dump-autoload来完成此操作,而无需执行安装或更新。

此外,出于性能考虑,它可以生成一个优化的自动加载器,将PSR-0/4包转换为类映射包。在包含许多类的大型应用程序中,自动加载器可能会占用每个请求时间的很大一部分。在开发中,对所有内容都使用类映射不太方便,但通过使用此选项,你仍然可以为了方便而使用PSR-0/4,为了性能而使用类映射。

  • **—optimize(-o):**将PSR-0/4自动加载转换为类映射,以获得更快的自动加载器。这尤其推荐在生产环境中使用,但运行可能需要一点时间,因此目前默认不执行此操作。
  • **—classmap-authoritative(-a):**仅从类映射自动加载类。隐式启用--optimize
  • **—apcu:**使用APCu缓存已找到/未找到的类。
  • —apcu-prefix: 为APCu自动加载器缓存使用自定义前缀。会隐式启用--apcu
  • —dry-run: 输出操作但不会执行任何内容。
  • **—no-dev:**禁用autoload-dev规则。Composer默认会根据上次installupdate``--no-dev的状态自动推断这一点。
  • **—dev:**启用自动加载开发规则。Composer 默认会根据上一次installupdate``--no-dev的状态自动推断这一点。
  • **—ignore-platform-reqs:**忽略所有phphhvmlib-*ext-*要求,并跳过这些的平台检查。另请参阅platform配置选项。
  • **—ignore-platform-req:**忽略特定的平台要求(phphhvmlib-*ext-*)并跳过对其的平台检查。可通过通配符忽略多个要求。
  • **—strict-psr:**如果当前项目中存在PSR-4或PSR-0映射错误(不包括依赖项),则返回失败的退出代码(1)。需要--optimize才能运行。
  • —strict-ambiguous: 如果在多个文件中发现同一个类,则返回失败退出代码(2)。需要与--optimize配合使用。

从Composer的缓存目录中删除所有内容。

  • —gc: 仅运行垃圾回收,不进行完整的缓存清理

列出每个已安装软件包的名称、版本和许可证。使用--format=json可获取机器可读的输出。

  • —locked: 从锁定文件中列出许可证,无论供应商目录中当前有什么。
  • —format: 输出格式:文本、json或摘要(默认值:“text”)。
  • —no-dev: 从输出中移除开发依赖项。

要手动运行脚本,你可以使用此命令,只需提供脚本名称,还可以选择性地提供任何所需参数。

  • —timeout: 以秒为单位设置脚本超时时间,0表示无超时。
  • —dev: 设置开发模式。
  • —no-dev: 禁用开发模式。
  • **—list(-l):**列出用户定义的脚本。

exec 执行一个供应商提供的二进制文件/脚本。你可以执行任何命令,这将确保在命令运行前,Composer的bin目录被添加到你的PATH中。 —list(-l): 列出可用的Composer二进制文件。 diagnose# 如果你认为自己发现了一个漏洞,或者某些东西运行异常,你可能需要运行diagnose命令来对许多常见问题执行自动检查。 archive# 此命令用于为特定版本的特定包生成zip/tar归档文件。它也可用于归档你的整个项目,且不包含被排除/忽略的文件。 —format(-f): 生成的归档文件格式:tar、tar.gz、tar.bz2或zip(默认:“tar”)。 —dir: 将归档文件写入此目录(默认:”.”) —file: 以给定的文件名写入归档文件。

Section titled “exec 执行一个供应商提供的二进制文件/脚本。你可以执行任何命令,这将确保在命令运行前,Composer的bin目录被添加到你的PATH中。 —list(-l): 列出可用的Composer二进制文件。 diagnose# 如果你认为自己发现了一个漏洞,或者某些东西运行异常,你可能需要运行diagnose命令来对许多常见问题执行自动检查。 archive# 此命令用于为特定版本的特定包生成zip/tar归档文件。它也可用于归档你的整个项目,且不包含被排除/忽略的文件。 —format(-f): 生成的归档文件格式:tar、tar.gz、tar.bz2或zip(默认:“tar”)。 —dir: 将归档文件写入此目录(默认:”.”) —file: 以给定的文件名写入归档文件。”

执行一个供应商提供的二进制文件/脚本。您可以执行任何命令,这将确保在命令运行前,Composer的bin目录被添加到您的PATH中。

  • **—list(-l):**列出可用的Composer二进制文件。

如果你认为自己发现了一个漏洞,或者某些东西运行异常,你可能需要运行diagnose命令来对许多常见问题执行自动检查。

php composer.phar diagnose

此命令用于为特定版本的特定软件包生成zip/tar归档文件。它还可用于归档整个项目,且不包含被排除/忽略的文件。

php composer.phar archive vendor/package 2.0.21 --format=zip
  • —format(-f): 生成的归档文件格式:tar、tar.gz、tar.bz2或zip(默认值:“tar”)。
  • **—dir:**将归档文件写入此目录(默认值:”.”)
  • **—file:**使用给定的文件名写入归档文件。

此命令用于检查您已安装的包是否存在潜在安全问题。默认情况下,它会使用Packagist.org api检查并列出安全漏洞公告;如果在composer.jsonrepositories部分指定了其他仓库,也会检查这些仓库。该命令还能检测已废弃的包。

审计命令会判断是否存在易受攻击或废弃的包,并根据检查结果返回以下退出代码:

  • 0 无问题;
  • 1 存在易受攻击的包;
  • 2 已废弃的包;
  • 3 存在漏洞且已废弃的包。
php composer.phar audit
  • —no-dev: 禁用对require-dev包的审计。
  • **—format(-f):**审计输出格式。必须为“table”(默认)、“plain”、“json”或“summary”。
  • —locked: 从锁定文件中审计包,无论 vendor 目录中当前有什么。
  • —abandoned: 关于废弃包的处理方式。必须是“ignore”、“report”或“fail”。另请参见config.audit.abandoned。传递此标志将覆盖配置值和环境变量。
  • —ignore-severity: 忽略特定严重程度的建议。可多次传递以忽略多个严重程度。

要获取有关某个命令的更多信息,可以使用help

php composer.phar help install

可以通过运行composer completion --help命令并按照说明来启用命令行补全功能。

你可以设置一些环境变量来覆盖特定的设置。但只要有可能,建议在configcomposer.json部分指定这些设置。值得注意的是,环境变量始终会优先于composer.json中指定的值。

通过设置COMPOSER环境变量,可以将composer.json的文件名设置为其他名称。

例如:

COMPOSER=composer-other.json php composer.phar install

生成的锁文件将使用相同的名称:本示例中为composer-other.lock

如果将其设置为1,此环境将禁用关于以root/超级用户身份运行命令的警告。它还会禁用sudo会话的自动清除,因此只有当你始终以超级用户身份使用Composer(例如在docker容器中)时,才应该设置此选项。

如果将其设置为1,此环境允许在启用Xdebug扩展时运行Composer,无需在未启用该扩展的情况下重启PHP。

COMPOSER_AUTH变量允许您将身份验证设置为环境变量。该变量的内容应为JSON格式的对象,其中包含所需的http-basic、github-oauth、bitbucket-oauth……对象</b1,并遵循配置中的规范

覆盖bin-compat配置设置。

通过设置此选项,您可以将bin供应商二进制文件)目录更改为vendor/bin以外的目录。

COMPOSER_CACHE_DIR变量允许您更改Composer缓存目录,该目录也可通过cache-dir选项进行配置。

默认情况下,在Windows系统上,它指向C:\Users\<user>\AppData\Local\Composer(或%LOCALAPPDATA%/Composer)。在遵循XDG BaseDirectory规范nix系统上,它指向$XDG_CACHE_HOME/composer。在其他nix系统和macOS上,它指向$COMPOSER_HOME/cache

通过设置此环境值,您可以设置在SSL/TLS对等验证期间使用的证书捆绑文件的路径。

如果设置为1,此环境变量会在Composer启用Xdebug扩展运行时抑制警告。

此环境变量控制discard-changes配置选项。

如果将其设置为0,此环境变量会在安装时抑制资助通知。

COMPOSER_HOME变量允许你更改Composer的主目录。这是一个隐藏的全局(机器上的每个用户)目录,在所有项目之间共享。

使用 composer config --global home 查看主目录的位置。

默认情况下,在Windows上它指向C:\Users\<user>\AppData\Roaming\Composer,在macOS上指向/Users/<user>/.composer。在遵循XDG BaseDirectory Specificationsnix系统上,它指向$XDG_CONFIG_HOME/composer。在其他nix系统上,它指向/home/<user>/.composer

你可以将一个config.json文件放入COMPOSER_HOME所指向的位置。当你运行installupdate命令时,Composer会将此配置的部分内容(仅configrepositories键)与你的项目的composer.json进行合并。

此文件允许您为用户的项目设置仓库配置

如果全局配置与本地配置匹配,则项目composer.json中的本地配置始终优先。

默认值为1。如果设置为0,Composer将不会在Composer主目录、缓存目录和数据目录中创建.htaccess文件。

如果设置了该值,它将被用作php的memory_limit。

如果设置为1,此环境会将默认的路径存储库策略更改为mirror,而不是symlink。由于这是所设置的默认策略,它仍然可以被存储库选项覆盖。

如果将此环境变量设置为1,Composer的行为将如同你在每个命令中都添加了--no-interaction标志一样。这可以在构建服务器/持续集成(CI)上进行设置。

这个环境变量控制着Composer等待命令(如git命令)执行完成的时间。默认值为300秒(5分钟)。

通过设置此变量,您可以指定根包的版本,如果无法从版本控制系统信息中推测出该版本,且该版本未在composer.json中存在的话。

通过设置此变量,你可以让Composer将依赖项安装到vendor以外的目录中。

这让你可以提示Composer运行在何种环境下,这有助于Composer解决一些特定于环境的问题。目前唯一支持的值是virtualbox,设置该值后,Composer会启用一些短暂的sleep()调用,以等待文件系统正确写入文件后再尝试读取它们。如果你使用Vagrant或VirtualBox,并且在安装过程中遇到明明应该存在的文件却找不到的问题,可以设置这个环境变量。

有关如何使用代理环境变量的更多详细信息,请参阅代理文档

设置为一个整数,用于配置可以并行下载的文件数量。默认值为12,且必须在1到50之间。如果您的代理在并发方面存在问题,或许您需要降低这个数值。提高该数值通常不会带来性能提升。

设置为一个整数,用于配置可以并行执行的进程数量。默认值为10,且该值必须在1到50之间。

设置为46可强制使用IPv4或IPv6进行DNS解析。这仅在使用curl扩展进行下载时有效。

如果设置了该选项,会使自更新命令将新的Composer phar文件写入该路径,而不是覆盖自身。这在只读文件系统上更新Composer时很有用。

如果设置为1,将禁用网络访问(尽力而为)。这可用于调试,或在网络连接不佳的飞机或星际飞船上运行Composer。

如果设置为prime,GitHub版本控制系统仓库将预加载缓存,这样它就可以通过1完全离线使用。

如果设置为1,则会输出有关正在分派的事件的信息,这对于插件作者确定具体何时触发了什么内容很有用。

接受以逗号分隔的事件名称列表,例如post-install-cmd,对于这些事件,脚本执行应该被跳过。

如果设置为1</b0,则相当于向requireupdateremovecreate-project命令传递--no-audit选项。

设置为ignorereportfail以覆盖audit.abandoned配置选项。

如果将其设置为1</b0,其效果等同于在requireupdateremovecreate-project命令中传递--no-security-blocking选项。这允许安装存在安全公告或已废弃的包。它会覆盖配置选项audit.block-insecure

如果设置为1</b0,则会在依赖项解析期间启用对废弃包的拦截(相当于将audit.block-abandoned配置设置为true)。如果设置为0</b3,则会禁用对废弃包的拦截。请注意,如果安全拦截功能被整体禁用,此设置将不起任何作用。它会覆盖配置选项audit.block-abandoned

如果将其设置为1,就相当于向require传递--update-no-dev选项,或者向installupdate传递--no-dev选项。你可以通过设置COMPOSER_NO_DEV=0来为单个命令覆盖此设置。

COMPOSER_PREFER_STABLE 如果设置为1</b0,其效果等同于在update或require命令中传递—prefer-stable选项。

Section titled “COMPOSER_PREFER_STABLE 如果设置为1</b0,其效果等同于在update或require命令中传递—prefer-stable选项。”

如果设置为1,其效果等同于向updaterequire传递--prefer-stable选项。

如果设置为1,则相当于向updaterequire传递--prefer-lowest选项。

如果设置为1,那么在同时启用--prefer-stable--prefer-lowest来解析依赖时,在没有稳定版本发布的情况下,开发版本会被视为比alpha/beta/RC版本更稳定。这在测试最低版本时很有用,同时相比预发布版本,仍会优先选择可能包含关键修复的分支。

如果设置为1,其效果等同于向updaterequireremove传递--minimal-changes选项。

COMPOSER_IGNORE_PLATFORM_REQ 或 COMPOSER_IGNORE_PLATFORM_REQS

Section titled “COMPOSER_IGNORE_PLATFORM_REQ 或 COMPOSER_IGNORE_PLATFORM_REQS”

如果COMPOSER_IGNORE_PLATFORM_REQS设置为1,其效果等同于传递--ignore-platform-reqs参数。否则,在COMPOSER_IGNORE_PLATFORM_REQ中指定一个以逗号分隔的列表,将忽略那些特定的要求。

例如,如果开发工作站永远不会运行数据库查询,这可以用来忽略对数据库扩展可用性的要求。如果你设置COMPOSER_IGNORE_PLATFORM_REQ=ext-oci8,那么即使oci8 PHP扩展未启用,composer也会允许安装包。

如果设置为1,其效果等同于向updaterequireremove传递--with-dependencies选项。

如果设置为1,其效果等同于向updaterequireremove传递--with-all-dependencies选项。

由于Composer使用symfony/console,你可以定义详细程度SHELL_VERBOSITY=-1用于隐藏Composer的输出(这等同于使用CLI选项--quiet)。请注意,这将适用于所有依赖symfony/console的工具,你可以在调用Composer后设置SHELL_VERBOSITY=0以恢复默认的详细程度。