構成
本章ではcomposer.jsonのスキーマのconfig節について記述していきます。
process-timeout
プロセス実行の制限時間で、秒単位です。
既定では300(5分)です。
git cloneのような時間の掛かるプロセスは、Composerによりプロセスの異常終了が推定されるまで、実行できます。
接続が遅い場合やベンダーが大きい場合は、これを増やす必要があるかもしれません。
例:
{
"config": {
"process-timeout": 900
}
}
個々のスクリプトのコマンドで制限時間を無効にする
scripts以下の独自コマンドでプロセスの制限時間を無効にするには、静的ヘルパーが使えます。
{
"scripts": {
"test": [
"Composer\\Config::disableProcessTimeout",
"phpunit"
]
}
}
allow-plugins
既定は{}で、1つもプラグインを読み込むことはできません。
Composer
2.2.0では、allow-pluginsオプションによってセキュリティの層が追加され、Composerの実行中にどのComposerプラグインがコードを実行できるかを制限できるようになりました。
新しいプラグインが最初に活性化され、それが構成オプションにまだ挙げられていなければ、Composerは警告を印字します。 Composerを対話的に実行すると、プラグインを実行するかどうかを決めるようプロンプトを出します。
この設定を使うと、信頼できるパッケージのみがコードを実行できるようになります。 パッケージ名パターンをキーに持つオブジェクトに設定します。 値は、許可する場合はtrueで、許可しない場合はfalseです。 何れもこれ以外の警告とプロンプトは抑制されます。
{
"config": {
"allow-plugins": {
"third-party/required-plugin": true,
"my-organization/*": true,
"unnecessary/plugin": false
}
}
}
構成オプション自体をfalseにして全てのプラグインを拒否したり、trueにして全てのプロラグインが走るのを許可したり(全くお勧めしません)するようにも設定できます。
例えば以下の通りです。
{
"config": {
"allow-plugins": false
}
}
use-include-path
既定ではfalseです。
trueにすると、Composerの自動読み込み器はPHPのインクルードパスにあるクラスも探します。
preferred-install
既定ではdistで、source、dist、autoの何れかです。
このオプションではComposerが優先して使うインストール方法を設定できます。
お好みで、より柔軟なインストール設定のためにキーにパッケージ名のパターンがあるオブジェクトにすることもできます。
{
"config": {
"preferred-install": {
"my-organization/stable-package": "dist",
"my-organization/*": "source",
"partner-organization/*": "auto",
"*": "dist"
}
}
}
sourceは、Composerが(存在する場合)sourceからパッケージをインストールすることを意味します。 通常、git cloneまたは同等のパッケージが使用するバージョン管理システムのチェックアウトです。 プロジェクトにバグ修正を行い、依存関係のローカルgitクローンを直接取得する場合に便利です。autoは遺物的な動作です。 開発バージョンの場合にComposerはsourceを自動的に使用し、それ以外の場合はdistを使用します。dist(Composer 2.1以降で既定)は、可能であればComposerがdistからインストールすることを意味します。 通常、zipファイルのダウンロードであり、リポジトリ全体のクローンよりも高速です。
補足: 順番は重要です。 より限定されたパターンは、より緩いパターンの前に来るべきです。 大域構成やパッケージ構成で文字列表記とハッシュ構成を混在させると、文字列表記は
*パッケージパターンに解釈されます。
source-fallback
Defaults to true. When set to true, Composer will automatically fall
back to an alternative installation source (e.g., from dist to source or
vice versa) when a download fails. Set to false to disable this behavior
and fail immediately if the preferred source is unavailable.
{
"config": {
"source-fallback": false
}
}
これはコマンドラインでも指定できます。
composer install --no-source-fallback
composer update --source-fallback
あるいはCOMPOSER_SOURCE_FALLBACK環境変数を介してもできます。
COMPOSER_SOURCE_FALLBACK=0 composer install
Note: When this option is disabled and a download fails, Composer will immediately throw an error instead of trying alternative sources. Make sure your preferred installation source (
preferred-install) is correctly configured.
policy
Unified security and package policy configuration. Controls security
advisories, malware detection, abandoned packages, and custom policy
lists. Audit reports can be generated with composer audit; blocking
prevents insecure or otherwise flagged package versions from being installed
during composer update, require, or remove and for the malware
detection additionally during a composer install.
falseに設定するとすべてのポリシーの促進が無効になります。
{
"config": {
"policy": false
}
}
Migrating from
config.audit? See Howconfig.auditinteracts withconfig.policyfor how the legacy keys are still honored as a fallback while you migrate.
advisories
セキュリティの勧告により影響を受けるパッケージのための構成です。
block
Defaults to true. When true, package versions with active security
advisories are blocked and cannot be installed during
update/require/remove unless the advisory or package is ignored.
{
"config": {
"policy": {
"advisories": {
"block": false
}
}
}
}
audit
Defaults to fail. How composer audit treats packages with security
advisories.
ignoreは、勧告が報告されませんreport— advisories are reported but do not cause a non-zero exit codefailでは、勧告によりcomposer auditに非ゼロコードの失敗が引き起こされます。
{
"config": {
"policy": {
"advisories": {
"audit": "report"
}
}
}
}
ignore-id
A list of advisory IDs (CVE, GHSA, PKSA, …) to ignore. Each entry can
optionally include a reason and scoping (on-block/on-audit) to limit
where the ignore applies.
単純なリスト:
{
"config": {
"policy": {
"advisories": {
"ignore-id": ["CVE-1234", "GHSA-xx"]
}
}
}
}
理由付き:
{
"config": {
"policy": {
"advisories": {
"ignore-id": {
"CVE-1234": "Not affected.",
"GHSA-xx": "Patch applied."
}
}
}
}
}
スコープ付き:
on-block: false means the advisory no longer blocks updates but is still
reported in audit. on-audit: false means the advisory still blocks
updates but is no longer reported in audit.
{
"config": {
"policy": {
"advisories": {
"ignore-id": {
"CVE-1234": {"on-block": false, "reason": "Patch applied, still want blocking."},
"GHSA-xx": {"on-audit": false, "reason": "False positive, still report."}
}
}
}
}
}
ignore
A list of package names to ignore for security advisories. Supports wildcards and optional version constraints. See the ignore format for all supported syntax variants.
ignore-severity
無視する勧告のセキュリティの水準のリストであり、low、medium、high、criticalの何れかです。
単純なリスト:
{
"config": {
"policy": {
"advisories": {
"ignore-severity": ["low", "medium"]
}
}
}
}
スコープ付き:
{
"config": {
"policy": {
"advisories": {
"ignore-severity": {
"low": {"on-block": false},
"medium": {"on-audit": false, "reason": "Handled via WAF"}
}
}
}
}
}
abandoned
放棄されたパッケージ用の構成です。
block
Defaults to false. When true, abandoned packages cannot be installed
during update/require/remove.
{
"config": {
"policy": {
"abandoned": {
"block": true
}
}
}
}
audit
既定でfailです。
どのようにcomposer auditが放棄されたパッケージを扱うかを決めます。
ignoreは、放棄されたパッケージが報告されませんreportでは、放棄されたパッケージが報告されるものの非ゼロコードの終了を引き起こしません。failでは、放棄されたパッケージによりcomposer auditは非ゼロのコードでの終了が引き起こされます。
{
"config": {
"policy": {
"abandoned": {
"audit": "report"
}
}
}
}
Can be overridden via the
COMPOSER_AUDIT_ABANDONED
environment variable or the --abandoned CLI option.
ignore
A list of package names (or patterns) to ignore for the abandoned check, regardless of their abandoned state. See the ignore format for all supported syntax variants.
{
"config": {
"policy": {
"abandoned": {
"ignore": {
"acme/*": "Scheduled for replacement next quarter.",
"vendor/legacy": {"on-block": false, "reason": "Allow in updates but still report."}
}
}
}
}
}
malware
マルウェアを含むものとして旗が立ったパッケージのための構成です。
block
既定でtrueです。
trueのとき、マルウェアとして旗が立ったパッケージは阻害されます。
block-scope
既定でallです。
これはどのコマンドが阻害のきっかけとなるかを制御するものです。
allでは、update/require/removeとinstallの両方の間に阻害しますupdateでは、update/require/removeの間でのみ阻害しますinstallでは、installの間でのみ阻害します
{
"config": {
"policy": {
"malware": {
"block-scope": "update"
}
}
}
}
audit
既定でfailです。
advisories.auditと同じ値です。
ignore
Package names to exclude from malware checks. See the ignore format for all supported syntax variants.
ignore-source
マルウェアの検査から除かれるソースの名前のリストです。
{
"config": {
"policy": {
"malware": {
"ignore-source": ["aikido"]
}
}
}
}
ignore-unreachable
Defaults to ["update", "install"]. When the operation is ignored,
repositories and policy sources that are unreachable or return a non-200
response are silently ignored rather than causing an error. Useful in
environments where not all package repositories are accessible.
Set to true to ignore unreachable repositories and policy sources for all
operations and to false to ignore them for no operations. Possible values
are: audit, install, and update.
{
"config": {
"policy": {
"ignore-unreachable": ["install", "update", "audit"]
}
}
}
独自のリスト
In addition to the built-in advisories, malware, and abandoned lists,
you can define named custom policy lists. A custom list receives its data
from one or more URL sources (configured by package repositories or set
explicitly here).
{
"config": {
"policy": {
"my-list": {
"block": true,
"audit": "fail",
"sources": [
{"type": "url", "url": "https://example.org/policy-list.json"}
],
"ignore": {
"vendor/package": "Assessed and accepted."
}
}
}
}
}
Source URLs must use https://. http:// and other schemes are rejected
both at schema validation time (composer validate) and at config load
time.
Custom list names must not conflict with the reserved names advisories,
malware, or abandoned, and must not start with ignore (the only
ignore-prefixed key allowed at this level is the documented
ignore-unreachable setting).
The following names are reserved for future built-in lists and cannot be
used as custom list names: package, packages, license, licence,
licenses, licences, support, maintenance, security,
minimum-release-age. Composer rejects any colliding key both at schema
validation time (composer validate) and at config load time.
ignoreの形式
The ignore key on every list accepts package name patterns with optional
version constraints and per-rule scoping. All formats may be mixed in the
same map.
単純なリスト(すべてのバージョンを無視):
{
"config": {
"policy": {
"<list>": {
"ignore": ["vendor/package", "acme/*"]
}
}
}
}
理由付き:
{
"config": {
"policy": {
"<list>": {
"ignore": {
"vendor/package": "Assessed, no risk."
}
}
}
}
}
パッケージ制約付き:
{
"config": {
"policy": {
"<list>": {
"ignore": {
"vendor/package": {"constraint": "^2.0", "reason": "Only v2 is affected."}
}
}
}
}
}
スコープ付き:
on-block: false ignores only for audit (the package is still blocked
during updates as on-block ignoring is disabled). on-audit: false ignores
only for blocking (the package is still reported in audit).
{
"config": {
"policy": {
"<list>": {
"ignore": {
"vendor/package": {"on-audit": false, "reason": "Workaround applied; keep reporting."}
}
}
}
}
}
同じパッケージのための複数の規則:
{
"config": {
"policy": {
"<list>": {
"ignore": {
"vendor/package": [
{"constraint": "^1.0", "on-audit": false},
{"constraint": "^2.0", "reason": "v2 is patched."}
]
}
}
}
}
}
audit
Deprecated. Use
config.policyinstead. Allconfig.auditkeys are still supported for backwards compatibility but will be removed in a future major version.
セキュリティの監査とバージョンの遮断の構成オプションです。
監査の報告はcomposer auditで生成でき、短い形式のものは自動でupdateないしrequireコマンドの末尾で報告されます。
バージョンの遮断では、安全でなかったり放棄されたりしているものと確認されたパッケージのバージョンを、構成に応じて、依存関係を解決する前に無視します。
これにより、そうしたパッケージがインストールされないようにします。
config.auditはどのようにconfig.policyと相互作用するか
The legacy config.audit keys are only read as a fallback when the
corresponding config.policy block is absent. The fallback
is all-or-nothing per built-in list:
- If
config.policy.advisoriesis set (to any value, includingfalse), every advisories-relatedaudit.*key (audit.block-insecure,audit.ignore,audit.ignore-severity) is ignored entirely — onlypolicy.advisories.block,policy.advisories.ignore, andpolicy.advisories.ignore-severityare read. Mix-and-matching, e.g. settingpolicy.advisories.blockwhile expectingaudit.ignore-severityto still apply, is not supported — migrate all advisories-related settings together. - If
config.policy.abandonedis set (to any value, includingfalse), every abandoned-relatedaudit.*key (audit.block-abandoned,audit.abandoned,audit.ignore-abandoned) is ignored entirely — onlypolicy.abandoned.block,policy.abandoned.audit, andpolicy.abandoned.ignoreare read. - The two built-in lists are independent: configuring
policy.advisorieswhile leaving the abandoned settings underaudit.*is allowed and vice versa. - Setting
policy.ignore-unreachablesupersedes the legacyaudit.ignore-unreachablekey.
ignore
Deprecated. Use
config.policy.advisories.ignore-idfor advisory IDs (CVE, GHSA, PKSA) andconfig.policy.advisories.ignorefor package names instead. Note: the new format useson-block/on-auditbooleans instead of"apply": "audit|block|all".
勧告の識別子、リモートの識別子、CVEの識別子、パッケージ名(非推奨)のリストです。 これらは監査の報告やバージョンの遮断からは無視されます。
理由付きの単純な形式:
{
"config": {
"audit": {
"ignore": {
"CVE-1234": "The affected component is not in use.",
"GHSA-xx": "The security fix was applied as a patch.",
"PKSA-yy": "Due to mitigations in place the update can be delayed."
}
}
}
}
理由のない単純な形式:
{
"config": {
"audit": {
"ignore": ["CVE-1234", "GHSA-xx", "PKSA-yy"]
}
}
}
適用範囲付きの詳細な形式:
詳細な形式では、無視するための構成が、監査の報告だけか、バージョンの遮断のみか、あるいはその両方かを制御できるようにします。
applyフィールドは
audit- 監査の報告だけ無視します (勧告は監査の報告に現れませんが、パッケージは更新するときに遮断されます)block- バージョンの遮断のみ無視します (パッケージは更新中のみ使えますが、勧告は監査の報告に現れます)all- 監査の報告とバージョンの遮断のときに無視されます(既定の動作)
{
"config": {
"audit": {
"ignore": {
"CVE-1234": {
"apply": "audit",
"reason": "Not applicable to us, so don't report, but still want to make sure we don't use this version in updates."
},
"GHSA-xx": {
"apply": "block",
"reason": "Workaround applied, can only fix next week, allow during updates but still report in audits"
},
"PKSA-yy": {
"apply": "all",
"reason": "False report, Ignore completely in all contexts"
}
}
}
}
}
これら全ての形式は同じ構成に混ぜて使えます。
abandoned
非推奨です。
config.policy.abandoned.auditを代用してください。
Composer 2.7以降、既定でfailです(このオプションが追加されたComposer 2.6では既定でreportでした)。
監査コマンドが放棄されたパッケージを報告するかどうかを定義するもので、3つの値を取り得ます。
ignoreでは、監査の報告で放棄されたパッケージを全く考慮しません。reportでは、放棄されたパッケージが失敗として報告されるものの、composerの監査コマンドは非ゼロコードで終了しません。failでは、放棄されたパッケージにより監査コマンドが非ゼロコードで失敗します。
なお、これは監査の報告にのみ適用されます。
この設定は安全でないパッケージの阻止には効果がありません。
放棄されたパッケージの阻止を構成するには、block-abandonedオプションを参照。
{
"config": {
"audit": {
"abandoned": "report"
}
}
}
Composer
2.7以降、COMPOSER_AUDIT_ABANDONED環境変数を介して、オプションをオーバーライドできます。
Composer
2.8以降、--abandonedコマンドラインオプションを介して、オプションをオーバーライドできます。
このオプションにより、構成値と環境変数が共にオーバーライドされます。
ignore-abandoned
Deprecated. Use
config.policy.abandoned.ignoreinstead. Note: the new format useson-block/on-auditbooleans instead of"apply": "audit|block|all".
放棄されたパッケージ名のリストで、監査の報告やバージョンの遮断で無視されます。 放棄された状態であっても使い続けたいパッケージを選ぶことができます。
理由付きの単純な形式:
{
"config": {
"audit": {
"ignore-abandoned": {
"acme/*": "Work scheduled for removal next month.",
"acme/package": "Transitive dependency but unreachable and not in active use within our project context."
}
}
}
}
理由のない単純な形式:
{
"config": {
"audit": {
"ignore-abandoned": ["acme/*", "acme/package"]
}
}
}
適用範囲付きの詳細な形式:
詳細な形式では、無視する設定が、監査の報告のみか、バージョンの遮断のみか、あるいはその両方に適用されるかを制御できます。
applyフィールドは以下を受け付けます。
audit- 監査の報告のみ無視します
(パッケージは監査の報告に現れませんが、block-abandonedが有効のときは更新のときに遮断されます)
block- バージョンの遮断のみ無視します (block-abandonedが有効でもパッケージは更新のときに使えます。 ただし監査の報告には現れます)all- 監査の報告とバージョンの遮断を無視します(既定の動作)
{
"config": {
"audit": {
"ignore-abandoned": {
"acme/package": {
"apply": "block",
"reason": "Allow during updates but still report as abandoned"
},
"vendor/*": {
"apply": "all",
"reason": "We maintain these packages internally"
}
}
}
}
}
これら全ての形式は同じ構成に混ぜて使えます。
ignore-severity
Deprecated. Use
config.policy.advisories.ignore-severityinstead. Note: the new format useson-block/on-auditbooleans instead of"apply": "audit|block|all".
既定は[]です。
監査の報告やバージョンの遮断で無視されるセキュリティ水準のリストです。
単純な形式:
{
"config": {
"audit": {
"ignore-severity": ["low", "medium"]
}
}
}
適用範囲付きの詳細な形式:
詳細な形式では、無視する構成が、監査の報告のみか、バージョンの遮断のみか、あるいはその両方に適用されるかを制御できます。
applyフィールドは以下を受け付けます。
audit- 監査の報告のみ無視します (この厳密さの勧告は監査の報告に現れませんが、パッケージは更新のとき遮断されます)block- バージョンの遮断のみ無視します (パッケージは更新のときは使えますが、この厳密さの勧告は監査の報告で現れます)all- 監査と遮断の両方で無視されます(既定の動作)
{
"config": {
"audit": {
"ignore-severity": {
"low": {
"apply": "all"
},
"medium": {
"apply": "block"
}
}
}
}
}
これら全ての形式は同じ構成に混ぜて使えます。
ignore-unreachable
非推奨です。
config.policy.ignore-unreachableを代用してください。
既定でfalseです。
到達できないリポジトリはcomposer auditのときに無視されます。
全てのリポジトリはアクセスできない環境でコマンドを実行するときに役立つことがあります。
この設定はcomposer auditコマンド以外のところで生成されたバージョンの遮断や監査の報告には適用されません。
{
"config": {
"audit": {
"ignore-unreachable": true
}
}
}
block-insecure
非推奨です。
config.policy.advisories.blockを代用してください。
既定でtrueです。
trueのとき、セキュリティ勧告が無視されていなければ、セキュリティ勧告の影響を受けるパッケージのバージョンは遮断され、composer
update/require/deleteコマンドで使えません。
block-abandonedが有効であれば、バージョンの遮断では、放棄されたパッケージの使用も防ぎます。
{
"config": {
"audit": {
"block-insecure": false
}
}
}
block-abandoned
非推奨です。
config.policy.abandoned.blockを代用してください。
既定でfalseです。
trueのとき、放棄されたパッケージはcomposerのupdate/required/deleteコマンドで使えません。
block-insecureが偽に設定されてバージョンの遮断が無効になっていないときにのみ適用されます。
{
"config": {
"audit": {
"block-abandoned": true
}
}
}
use-parent-dir
composer.jsonがないディレクトリでComposerを実行しており、その上のディレクトリにcomposer.jsonがある場合、Composerは既定で、そのディレクトリのcomposer.jsonを代わりに使用するかどうかを尋ねます。
このプロンプトに対して常に「はい」と答えたい場合は、この構成値をtrueに設定できます。
プロンプトが表示されないようにするには、falseに設定します。
既定は"prompt"です。
補足: この構成を機能させるには、大域的な利用者全体の構成で設定しなければなりません。 例えば
php composer.phar config --global use-parent-dir trueを使用して設定します。
store-auths
認証のプロンプトの後にする動作です。
true(常に保存する)、false(保存しない)、"prompt"(毎回確認する)の何れか1つで、既定では"prompt"です。
github-protocols
既定では["https", "ssh", "git"]です。
github.comからクローンを作成するときに使用するプロトコルのリストで、優先度順に並べます。
既定ではgitが存在しますが、gitプロトコルは暗号化されていないため、secure-httpが無効になっている場合のみ使われます。
originのリモートプッシュURLでssh (git@github.com:...)
ではなくhttpsを使用する場合、プロトコルリストを["https"]のみに設定すると、ComposerはプッシュURLをSSHのURLに上書きすることを取り止めます。
github-oauth
ドメイン名とoauthキーのリストです。
たとえば、このオプションの値として{"github.com": "oauthtoken"}を使用すると、oauthtokenを使用してgithubの私有リポジトリにアクセスし、APIのIPに基づく低いレート制限を回避します。
Composerは、必要に応じて資格情報を要求する場合がありますが、これらは手動で設定することもできます。
GitHubのOAuthトークンを取得する方法及びcliの構文の詳細については、こちらを参照してください。
gitlab-domains
既定では["gitlab.com"]です。
GitLabサーバーのドメインのリストです。
gitlabリポジトリ種別を使う場合に使用されます。
gitlab-oauth
ドメイン名とoauthキーのリストです。
たとえば、このオプションの値として{"gitlab.com": "oauthtoken"}を使用すると、oauthtokenを使用してgitlabの私有リポジトリにアクセスします。
なお、パッケージがgitlab.comでホストされていない場合、ドメイン名もgitlab-domainsオプションで指定する必要があります。
詳細情報はこちらにもあります。
gitlab-token
ドメイン名と私有トークンのリストです。
私有トークンは、単純な文字列、または利用者名とトークンを含む配列の何れかです。
たとえば、このオプションの値として{"gitlab.com": "privatetoken"}を使用すると、privatetokenを使用してgitlabの私有リポジトリにアクセスします。
{"gitlab.com": {"username": "gitlabuser", "token": "privatetoken"}}を使用すると、利用者名とトークンの両方を使ってgitlabのデプロイトークン機能 (https://docs.gitlab.com/ ee/user/project/deploy_tokens/) を使用します。
なお、パッケージがgitlab.comでホストされていない場合、ドメイン名もgitlab-domainsオプションで指定する必要があります。
トークンにはapiまたはread_apiスコープが必要です。
詳細情報はこちらにもあります。
gitlab-protocol
パッケージメタデータのsource値用にリポジトリのURLを作成するときに、強制的に使用するプロトコルです。
gitまたはhttpの何れかです(httpsはhttpの同義語として扱われます)。
HTTPベーシック認証を使ったGitLabのCI_JOB_TOKENにより、後々GitLab
CIのジョブでクローンされる私有リポジトリを参照するプロジェクトを扱う際に役立ちます。
既定では、Composerは私有リポジトリについてはgit-over-SSHのURLを生成し、公開リポジトリについてはHTTP(S)のみを生成します。
forgejo-domains
既定では["codeberg.org"]です。
Forgejoサーバーのドメインのリストです。
forgejoリポジトリ種別を使う場合に使用されます。
forgejo-token
ドメイン名とそのドメインで認証するためのユーザー名/アクセストークンのリストです。
たとえば、このオプションの値として{"codeberg.org": {"username": "forgejo-user", "token": "access-token"}}を使うと、codeberg.orgに対して認証します。
なお、パッケージがcodeberg.orgのドメイン名でホストされていない場合、ドメイン名もforgejo-domainsオプションで指定する必要があります。
詳細情報はこちらにもあります。
disable-tls
既定はfalseです。
真に設定すると、すべてのHTTPSのURLが代わりにHTTPで試行され、ネットワークレベルの暗号化は実行されません。
これを有効にすることはセキュリティ上の危険性であり、全く推奨されません。
より良い方法は、php.iniでphp_openssl拡張機能を有効にすることです。
これを有効にすると、secure-httpオプションが暗黙に無効になります。
secure-http
既定ではtrueです。
真に設定すると、HTTPSのURLのみがComposer経由でダウンロードできるようになります。
何かしらへのHTTPアクセスが絶対に必要な場合は無効にできますが、Let’s
Encryptを使用して無料のSSL証明書を取得する方が一般的にはより良い代替手段です。
bitbucket-oauth
ドメイン名と消費者のリストです。
例えば{"bitbucket.org": {"consumer-key": "myKey", "consumer-secret": "mySecret"}}のように使います。
より詳しくはこちらを読んでください。
cafile
ローカルファイルシステム上の認証局ファイルの配置場所です。 PHP 5.6以降ではシステムCAファイルを自動的に検出できますが、PHP 5.6以降でも、php.iniのopenssl.cafileを介してこれを設定すべきです。
capath
cafileが指定されていない場合、またはそこに証明書がない場合は、capathが指すディレクトリで適切な証明書が探索されます。 capathは正しくハッシュされた証明書ディレクトリでなければなりません。
http-basic
認証するためのドメイン名と、利用者名とパスワードのリストです。
たとえば、このオプションの値として{"example.org": {"username": "alice", "password": "foo"}}を使用すると、Composerはexample.orgに対して認証します。
詳細については、こちらを参照してください。
bearer
認証するドメイン名とトークンのリストです。
たとえば、このオプションの値として{"example.org": "foo"}を使用すると、ComposerはAuthorization: Bearer fooヘッダーを使用して、example.orgに対して認証を行うことができます。
platform
プラットフォームパッケージ(PHP及び拡張機能)を偽装して、運用環境をエミュレートしたり、構成で対象のプラットフォームを定義したりできるようにします。
例えば{"php": "7.0.3", "ext-something": "4.0.3"}です。
これにより、ローカルで実行する実際のPHPバージョンに関係なく、PHP 7.0.3以上を必要とするパッケージをインストールできなくなります。
ただし、依存関係が正しく検査されなくなったことも意味します。
PHP 5.6を実行すると、7.0.3を想定しているため問題なくインストールされますが、実行時に失敗します。
これは、{"php":"7.4"}が指定されることも意味します。
7.4.1を最小のバージョンとして定義するパッケージは使用されません。
したがって、これを使用する場合は、デプロイ戦略の一部としてcheck-platform-reqsコマンドも走らせることをお勧めしますし、より安全です。
ローカルにインストールしていない拡張機能が依存関係に必要な場合は、代わりに--ignore-platform-req=ext-fooをupdate、install、またはrequireに渡して無視できます。
しかし長い目で見れば、今は無視するにせよ必要な拡張はインストールすべきで、1箇月後に新しいパッケージでも必要になると、知らず知らずのうちに本番環境に問題が発生する可能性があります。
拡張をローカルにインストールしているが本番環境ではそうではない場合、{"ext-foo": false}を使ってComposerから意図的に隠すこともできます。
vendor-dir
既定はvendorです。
お好みで違うディレクトリに依存関係をインストールできます。
vendor-dirと以下の全ての*-dirオプション中では、$HOMEと~はホームディレクトリに置換されます。
bin-dir
既定ではvendor/binです。
プロジェクトがバイナリを含む場合、それらのバイナリはこのディレクトリにシンボリックリンクが張られます。
data-dir
既定では、WindowsではC:\Users\<user>\AppData\Roaming\Composer、XDG Base Directory Specificationsに従うunixシステムでは$XDG_DATA_HOME/composer、その他のunixシステムでは$COMPOSER_HOMEです。
現在、過去のcomposer.pharファイルを保存して古いバージョンにロールバックできるようにするためにのみ使用されています。
COMPOSER_HOMEも参照してください。
cache-dir
既定では、WindowsではC:\Users\<user>\AppData\Local\Composer、macOSでは/Users/<user>/Library/Caches/composer、XDG Base Directory Specificationに従うunixシステムでは$XDG_CACHE_HOME/composer、他のunixシステムでは$COMPOSER_HOME/cacheになります。
Composerで使う全てのキャッシュが保管されます。
COMPOSER_HOMEも参照してください。
cache-files-dir
既定では$cache-dir/filesです。
パッケージのzipアーカイブを保管します。
cache-repo-dir
既定では$cache-dir/repoです。
composerの種別用のリポジトリのメタデータと、svn、fossil、github、gitbucketの種別のVCSリポジトリを保管します。
cache-vcs-dir
既定では$cache-dir/vcsです。
git及びhgの種別用のVCSリポジトリメタデータを読み込むためのVCSクローンを保管し、インストールを高速にします。
cache-files-ttl
既定では15552000(6箇月)です。
Composerはダウンロードした全てのdist(zip、tar、……)をキャッシュします。
既定では使われていないものについて6箇月経った後に削除します。
このオプションはこの期間を(秒数で)調整ないし0に設定することで、完全に無効にできるようにするものです。
cache-files-maxsize
既定では300MiBです。
Composerはダウンロードした全ての配布パッケージ(zip、tar、……)をキャッシュします。
ガベージコレクションが定期的に走っている場合、キャッシュで使える最大量です。
最後のキャッシュヒットから時間が経った(比較的使われていない)ファイルが削除されます。
cache-read-only
既定ではfalseです。
Composerのキャッシュを読取専用モードで使うかどうかを決めます。
bin-compat
既定ではautoです。
インストールするバイナリの互換性を決定します。
autoの場合、Composerは、WindowsまたはWSLの場合に.batプロキシファイルのみをインストールします。
fullに設定すると、Windows用の.batファイルとUnixベースのオペレーティングシステム用のスクリプトの両方がバイナリごとにインストールされます。
主にLinux VM内でComposerを実行しているが、WindowsホストOSで使用できる.batプロキシが必要な場合に役立ちます。
proxyに設定すると、ComposerはbashでUnixスタイルのプロキシファイルのみを作成し、WindowsないしWSLでも.batファイルを作成しません。
prepend-autoloader
既定はtrueです。
falseにするとComposerの自動読み込み器は既存の自動読み込み器の前に置かれなくなります。
他の自動読み込み器との相互運用性の問題を修正する際に必要になることがあります。
autoloader-suffix
既定ではnullです。
空でない文字列に設定した場合、生成されたComposerの自動読み込み器の接尾辞に使われます。
nullに設定された場合、可能であればcomposer.lockファイルのcontent-hash値が使われます。
そうでなければ、乱択された接尾辞が生成されます。
optimize-autoloader
既定ではfalseです。
trueの場合、自動読み込み器を吐き出す際に常に最適化されます。
sort-packages
既定ではfalseです。
trueの場合、新しいパッケージを追加したときにcomposer.json中のrequireコマンドでパッケージが名前順に整列された状態に保たれます。
classmap-authoritative
既定ではfalseです。
trueにするとComposerの自動読み込み器はクラスマップからのクラスのみを読み込みます。
暗にoptimize-autoloaderを有効にします。
apcu-autoloader
既定ではfalseです。
trueの場合、Composerの自動読み込み器はAPCuを確認し、拡張が有効になった場合にクラスの有無をキャッシュするのに使います。
github-domains
既定では["github.com"]です。
githubモードで使われるドメインのリストです。
GitHub Enterpriseの準備で使われます。
github-expose-hostname
既定ではtrueです。
falseにするとgithub APIにアクセスするために作られるOAuthトークンがマシンのホスト名ではなく日付になります。
use-github-api
既定ではtrueです。
特定のリポジトリに於けるno-apiキーに似ており、use-github-apiをfalseに設定すると、他のgitリポジトリのように、全てのGitHubリポジトリについて、GitHub
APIを使う代わりにリポジトリをクローンするように大域的な挙動を定義します。
しかしgitドライバを直接使うのではなく、ComposerはやはりGitHubのzipファイルを使うことを試みます。
notify-on-install
既定ではtrueです。
Composerではリポジトリが通知のURLを定義できるようにしており、そのリポジトリからパッケージがインストールされたことの通知を受けられます。
このオプションはその挙動を無効にできます。
discard-changes
既定ではfalseで、true、false、またはstashの何れかにできます。
このオプションでは非対話モードでダーティアップデートを制御する既定の方式を設定できます。
trueはベンダーの変更を常に破棄しますが、"stash"は取っておいて再適用しようとします。
よくベンダーを変更する場合は、CIサーバーやデプロイスクリプトにこれを使ってください。
archive-format
既定ではtarです。
archiveコマンドにより使われる既定の形式を上書きします。
archive-dir
既定では.です。
archiveコマンドによる作られる、アーカイブの既定の対象パスです。
例:
{
"config": {
"archive-dir": "/home/user/.composer/repo"
}
}
htaccess-protect
既定ではtrueです。
falseに設定すると、ComposerはComposerのホーム、キャッシュ、データディレクトリに.htaccessファイルを作りません。
lock
既定ではtrueです。
falseに設定すると、Composerはcomposer.lockファイルを作らず、存在している場合は無視します。
platform-check
既定では、PHPのバージョンのみをチェックするphp-onlyに設定されています。
拡張子の存在も確認するには、trueに設定します。
falseに設定すると、Composerは自動読み込み器のブートストラップの一部としてplatform_check.phpファイルを作成せず、requireもしません。
secure-svn-domains
既定では[]です。
安全なSubversionまたはSVNの移送を使用しているものとして信頼し、印を付けるべきドメインの一覧です。
既定では、svn://プロトコルは安全ではないと見なされ、throwされますが、この構成オプションを["example.org"]に設定すれば、そのホスト名でsvnのURLを使用できます。
secure-httpを完全に無効にするよりも優れた安全な代替手段です。
bump-after-update
既定はfalseで、true、false、"dev"、"no-dev"のどれかにできます。
真に設定すると、Composerはupdateコマンドを走らせた後に、bumpコマンドを走らせます。
"dev"や"no-dev"に設定すると、対応する依存関係のみのバージョンが上がります。
allow-missing-requirements
既定はfalseです。
要件から何か欠けているものがあるとき、install時にエラーを無視します。
状況としては、composer.jsonにある最新の変更点に対して、固定ファイルが最新でないときです。
update-with-minimal-changes
既定で偽です。
真にすると、更新するとき、遷移的な依存関係に絶対に必須なものだけ変更します。
COMPOSER_MINIMAL_CHANGES=1環境変数で設定することもできます。