ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
このエラーの概要
Laravel / Symfony プロジェクトで composer install や composer update を実行したときに、次のようなメッセージが出て止まります:
Problem 1
- laravel/framework[v10.0.0, ..., v10.48.0] require ext-dom * -> it is missing
from your system. Install or enable PHP's dom extension.
- Root composer.json requires laravel/framework ^10.0 -> satisfiable by
laravel/framework[v10.0.0, ...].
To enable extensions, verify that they are enabled in your .ini files:
- /etc/php/8.2/cli/php.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
これは Composer が依存パッケージの require セクションで指定された PHP 拡張(ext-dom 等)が、現在の PHP に組み込まれていないことを検知したときに出るエラーです。
不足しがちな PHP 拡張一覧
| 拡張名 | 用途 | Ubuntu パッケージ | CentOS パッケージ |
|---|---|---|---|
dom | XML/HTML パース(DOMDocument) | php-xml | php-xml |
xml | XML 全般 | php-xml | php-xml |
mbstring | マルチバイト文字列 | php-mbstring | php-mbstring |
zip | Zip 圧縮・展開 | php-zip | php-pecl-zip |
curl | HTTP クライアント | php-curl | php-curl |
gd | 画像処理 | php-gd | php-gd |
intl | 国際化・ロケール | php-intl | php-intl |
bcmath | 任意精度演算 | php-bcmath | php-bcmath |
pdo_mysql | MySQL 接続 | php-mysql | php-mysqlnd |
対処1: Ubuntu / Debian の場合
# 現在の PHP バージョンを確認
php -v
# PHP 8.2.x のように表示される
# dom / xml / mbstring / zip をまとめて入れる
sudo apt update
sudo apt install php-xml php-mbstring php-zip php-curl php-gd
# 特定バージョン指定(PHP 8.2 を使っているとき)
sudo apt install php8.2-xml php8.2-mbstring php8.2-zip
# 確認
php -m | grep -E "dom|xml|mbstring|zip"
# Apache を使っている場合は再起動
sudo systemctl restart apache2
# Nginx + PHP-FPM の場合
sudo systemctl restart php8.2-fpm
対処2: CentOS / RHEL / AlmaLinux の場合
# Remi リポジトリ利用が一般的
sudo yum install php-xml php-mbstring php-pecl-zip php-curl
# モジュール指定(PHP 8.2)
sudo dnf module reset php
sudo dnf module install php:remi-8.2
sudo dnf install php-xml php-mbstring php-pecl-zip
# 確認
php -m | grep dom
# php-fpm 再起動
sudo systemctl restart php-fpm
対処3: macOS (Homebrew) の場合
# Homebrew の PHP は dom / xml / mbstring が同梱
brew install php@8.2
# 切り替え
brew unlink php && brew link php@8.2 --force
# 確認
php -m | grep -E "dom|xml|mbstring"
対処4: Docker / Dockerfile の場合
公式 php:8.2-fpm 等のイメージは最小構成のため、多くの拡張が入っていません。Dockerfile で明示的にインストールします:
FROM php:8.2-fpm
# 必要な OS パッケージ
RUN apt-get update && apt-get install -y \
libxml2-dev \
libzip-dev \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
libicu-dev \
libonig-dev \
zip \
unzip \
git \
&& rm -rf /var/lib/apt/lists/*
# PHP 拡張をインストール
RUN docker-php-ext-install \
dom \
xml \
mbstring \
zip \
pdo_mysql \
bcmath \
intl
# GD は configure が必要
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install gd
# Composer インストール
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
対処5: php.ini で明示的に有効化
パッケージはインストール済だが php.ini で有効化されていない場合もあります:
# php.ini の場所を確認
php --ini
# Loaded Configuration File: /etc/php/8.2/cli/php.ini
# Additional .ini files parsed:
# /etc/php/8.2/cli/conf.d/20-dom.ini
# /etc/php/8.2/cli/conf.d/20-xml.ini
# 拡張ディレクトリ確認
php -i | grep extension_dir
# extension_dir => /usr/lib/php/20220829
# 手動で有効化(自動で読み込まれない場合)
echo "extension=dom" | sudo tee -a /etc/php/8.2/cli/php.ini
echo "extension=xml" | sudo tee -a /etc/php/8.2/cli/php.ini
# CLI と Apache/FPM では別々の php.ini を持つので注意
sudo cp /etc/php/8.2/cli/conf.d/20-dom.ini /etc/php/8.2/fpm/conf.d/
対処6: 一時回避(非推奨)
テスト環境で拡張をすぐ入れられない場合、composer に拡張チェックをスキップさせる方法があります(本番では絶対に使わない):
# 拡張要件をスキップ
composer install --ignore-platform-req=ext-dom
# 複数指定
composer install \
--ignore-platform-req=ext-dom \
--ignore-platform-req=ext-xml \
--ignore-platform-req=ext-mbstring
# 全プラットフォーム要件を無視(本当に最後の手段)
composer install --ignore-platform-reqs
確認方法
# インストール済拡張一覧
php -m
# 特定の拡張だけ確認
php -r "echo extension_loaded('dom') ? 'OK' : 'NG';"
# Composer 側から見たプラットフォーム
composer show --platform
# Composer が認識する PHP / 拡張
composer check-platform-reqs
よくあるトラブル
| 症状 | 原因 | 対処 |
|---|---|---|
| apt install 後も「missing」 | CLI と Web で異なる php.ini | FPM 側にも 20-dom.ini をコピー、FPM 再起動 |
| 複数 PHP バージョンが混在 | /usr/bin/php と /opt/... 等 | which -a php で全候補、update-alternatives |
| Docker でビルドは通るが実行で失敗 | マルチステージで拡張未コピー | 最終ステージにも docker-php-ext-install を |
| php-xml 入れても dom 出ない | php-fpm 再起動忘れ | systemctl restart php-fpm |
FAQ
Q: dom と xml の違いは?
A: dom は DOMDocument 系 API(HTML/XML パース)、xml は SimpleXML / XMLReader 系。Laravel は両方必要です。
Q: php.ini を編集したのに反映されない
A: CLI で確認したい場合は CLI の php.ini、Web (Apache/Nginx+FPM) の場合は SAPI 側の php.ini を編集する必要があります。phpinfo() で「Loaded Configuration File」を確認してください。
Q: Docker で docker-php-ext-install dom が遅い
A: 複数拡張を 1 行にまとめると共有部分のビルドが省略され速くなります。また mlocati/docker-php-extension-installer を使うと依存解決も自動になります。
関連エラー
Class 'DOMDocument' not found— 同じく ext-dom 未インストールext-mbstring * is missing—php-mbstringをインストールext-zip * is missing—php-zip(CentOS はphp-pecl-zip)
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 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 と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?