拡張不足はComposerを動かすPHPで確認:未導入・未読込・別PHP・設定上の非表示を区別します。下の旧ログと導入例は記録として保持しています。
エラー内容
Problem 1
- laravel/framework v5.5.9 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
(候補バージョンの数だけ同じ行が続く)
Composerが見ている環境で要求された拡張を利用できないという意味です。未導入だけでなく、CLIで未読込・別PHPへの導入・config.platformでの非表示も区別します。mbstringの部分は要求によってxml / curl / zip / gd等に変わります。
行が何十行も並ぶ理由や、拡張以外が原因のときの読み方はYour requirements could not be resolved to an installable set of packagesにまとめています。
発生条件/原因
composer install/composer create-projectの実行時- PHP本体と拡張が別パッケージとして提供されている場合。「別売り」は有料という意味ではありません。配布元・PHPの版・ビルドに合う提供方法を確認します。
- 複数の PHP バージョンが同居していて、Composer が使う CLI の PHP と、拡張を入れた PHP が違う
よく要求される拡張
次表のパッケージ名は旧Debian/Ubuntu系の例です。全OS・全PHP版での提供を保証しません。Composerのext-*は仮想プラットフォーム要件で、composer require ext-mbstringがOS拡張を導入するわけではありません。
| 拡張 | 用途 | Debian / Ubuntu のパッケージ名 |
|---|---|---|
mbstring | マルチバイト文字列。対象アプリ/ライブラリの要求を確認 | php-mbstring |
xml / dom | XML 解析。テストやテンプレートで使われる | php-xml |
curl | HTTP クライアント | php-curl |
zip | ZIP処理。Composerの展開にはシステムのunzip/7z等を使える場合もあるが、アプリのext-zip要件を代替しない | php-zip |
gd / imagick | 画像処理 | php-gd / php-imagick |
intl | 国際化(日付・数値の書式) | php-intl |
bcmath | 任意精度計算 | php-bcmath |
対処法(Linux)
次の導入例は旧記録で、一括実行しません。先にComposerを実行するPHPを特定し、対象OS・配布元・PHPの版に合う拡張を選びます。汎用のphp-mbstringが別のPHPを選ぶ場合があります。管理者による変更前に対象パッケージと依存変更の予定を確認し、導入後は同じCLIで読込を確認してからlockを再検査します。
sudo apt install php-mbstring
composer install
実行非推奨の旧例:次のsudo apt upgradeは広い範囲の導入済みパッケージを更新し得るため、拡張不足への一律対処にしません。apt updateは索引の更新であり、拡張の導入/読込ではありません。パッケージが見つからない場合は、OS/配布元/有効な提供元とエラーを確認し、索引更新が必要か管理者が判断します。
sudo apt update
sudo apt upgrade
旧記事のsudo dnf install php-mbstringも全RHEL系への共通処方ではありません。採用中の配布元・ストリーム・PHPの版を確認します。macOSも同梱を前提にせず、Homebrew等の実際のPHPバイナリと読込状態を確認します。
導入前に分ける4つの状態
| 観測 | 次に調べる対象 |
|---|---|
| 同じPHPのphp --ri mbstringで情報が出ない | 未導入か未読込。起動時の警告、主ini/追加ini、配布元のパッケージ/ビルドを確認 |
| phpでは見えるがComposerでは見えない | Composerのランチャーが使うPHPとconfig.platformを照合 |
| ブラウザだけ見える | WebとCLIのPHP・SAPI・iniが別でないか確認。Web側の設定をCLIへ丸ごとコピーしない |
| 拡張不足を直しても解決しない | 全Problemを再読。PHP要件・lock不整合・別拡張/依存競合を個別に確認 |
WindowsでDLLが必要な構成なら、PHPの版・x86/x64・TS/NTS等のビルド条件とextension_dir・DLLの依存を配布元資料で照合します。適当なDLLをコピーしたり、OSにないaptを代替実行したりしません。コンテナならComposerを動かすステージ/コンテナと実行用の環境をそれぞれ確認し、ホストへの導入でコンテナも直ったと判断しません。
同じCLIとComposer設定を照合する
以下は信頼できる作業コピー内での診断例です。先にUnix系ならcommand -v phpとcommand -v composer、PowerShellならGet-Command php,composer -Allでランチャーも調べます。必要なら確認済みのPHPの絶対パスで、確認済みのcomposer.pharを明示して起動し、同じPHPで各検査を揃えます。表示結果のパス・URL・設定値は共有前に秘密情報を除いてください。
php -v
php --ini
php -m
php --ri mbstring
composer --no-plugins --no-scripts show --platform
composer --no-plugins --no-scripts config --list --source
php --iniでは主iniだけでなく追加読込先も確認します。PHPRC、PHP_INI_SCAN_DIR、起動時の-c/-nで差が出ます。php --ri mbstringが成功しても別のPHPで起動したComposerの証明にはなりません。
config --list --sourceで有効値と由来を確認し、config.platformによるPHP/拡張の上書きやfalseでの非表示を調べます。設定は解決対象を模擬するだけでPHP/拡張を導入しません。エラー回避のために本番にない拡張をあることにせず、意図した配備環境との一致を確認します。
lockがある作業コピーで確認する順番
以下はcomposer.lockがある場合だけの順序です。validateでJSON/lockの整合性、check-platform-reqs --lockで固定依存が要求する実際のCLI環境を確認します。後者はconfig.platformを無視し、vendor未導入でもlockを基準に検査できます。失敗したらそこで止め、環境/変更意図を修正して再確認します。通常の開発依存も対象で、本番でrequire-devを除く配備ならその範囲を決めて--no-devを使います。
composer --no-plugins --no-scripts validate --check-lock
composer --no-plugins --no-scripts check-platform-reqs --lock
composer --no-plugins --no-scripts install --dry-run
dry-runはサンドボックスではありません。--no-plugins --no-scriptsは第三者コードの経路を減らす指定で、任意の不審なプロジェクトを安全にする保証ではありません。通常のComposerコマンドにもプラグインのイベントがあり、--no-scriptsだけではプラグインを止めません。通信やキャッシュの影響も別です。不明なコードは秘密値を持たない隔離環境で扱います。
この確認ではアプリ固有のプラグイン/スクリプトは動かしていないため、本来のビルドや初期化の成功は未検証です。承認された本実行とアプリテストを別に行い、終了コード0やplatform検査だけでWeb/FPM・キュー・本番全体の互換性を保証しません。lock削除、無差別update、全OS更新、要件の無視は診断の代わりになりません。
出典確認:2026年10月26日。Composer公式CLI(install/update・why-not・check-platform-reqs)、config.platform、仮想プラットフォーム依存、第三者コードと隔離の注意、PHP設定ファイル、mbstring導入条件。
入れたのに認識されないとき
下のgrep/whichはUnix系の旧例です。PowerShellではGet-Command php,composer -Allで候補を確認できます。PATHのphpとComposerのランチャーが選ぶphpが同じかも確認します。Webのphpinfoを外部公開して診断しません。
Composer は CLI の PHP を使います。ブラウザ(Web サーバ)側の phpinfo() で拡張が見えていても、CLI 側に入っていなければこのエラーは消えません。
# CLI が読み込んでいる拡張の一覧
php -m | grep mbstring
# CLI が読んでいる php.ini の場所
php --ini
# CLI の PHP のバージョン(複数入っているとここがずれる)
php -v
which php
確認するポイントは次の 3 つです。
php -mに出るか。出なければそのプロセスでは未読込です。パッケージ未導入と断定せず、起動警告・設定探索先・共有ライブラリ不足も確認します。php --iniの主iniと追加iniを確認。組込み済み拡張ならextension行は不要です。追加iniで既に読み込んでいるのに同じ行を重ねず、配布元の有効化方法に従います。php -vのバージョンと、入れたパッケージのバージョンが一致するか —php8.1-mbstringを入れたのに CLI が 8.2 なら効きません
CLIにはFPM再起動不要:新しく起動するCLIはその都度設定を読みます。Web側にも変更を反映する場合だけ、実際のFPM/Apache等のサービスと変更手順を別途確認します。旧例のsudo systemctl restart php8.2-fpmをサービス名未確認で実行せず、共有サービスの停止影響・承認も確認します。
関連記事
- Your requirements could not be resolved to an installable set of packages — 依存解決に失敗したときの読み方
- PHP — 言語のカテゴリ
子ページはありません
- Fatal error: Maximum execution time of 30 seconds exceeded in...
- Fatal error: Uncaught Error: Cannot use object of type stdClass as array in ...
- Warning: Use of undefined constant ... - assumed '...' (this will throw an Error)
- ERROR: Call to undefined method Maatwebsite\Excel\Excel::load()
- Maximum execution time of 30 seconds exceeded
- Your requirements could not be resolved to an installable set of packages. ... To enable extensions, verify that they are enabled in your .ini files:
- could not find driver
- the requested PHP extension mbstring is missing from your system.
- the requested PHP extension dom is missing from your system.
- A non well formed numeric value encountered
- Warning: Cannot modify header information - headers already sent by ...
- php_network_getaddresses: getaddrinfo failed: Name or service not known
- XMLWriter::openUri(): Unable to resolve file path
- Object of class stdClass could not be converted to string
- Class 'Google_Service_Youtube' not found
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09