logo

パレット - カラフルに🎨

Palette — ビジュアルページビルダー、デザインの専門知識は不要です。

ライブデモ パレットをダウンロード

Scroll

Composer を使った Drupal コアの更新

15/04/2025, by Ivan

このドキュメントは 未完成 です。情報を追加する。

Drupal 8.8.0 以降への更新で困っていますか?
Composer イニシアチブの一環として、Drupal 8.8.0 で大きな変更が導入され、長期的なサイト管理が大幅に改善されました。ただし、以前のバージョンからのアップグレードには重要な考慮事項があります。

はじめに

Composer が Drupal の依存関係をどのように管理するかを理解するには、Drupal で Composer を使う を参照してください。Composer が自分に適しているかどうかを判断するには、利用可能な選択肢を比較してください。

このガイドには、アップグレードを完了するのに役立つ Drush コマンドが含まれています。多くの人は、管理 UI よりも Drush の方が速いと感じています。

既存の Drupal サイトが一度も Composer を使ったことがない場合は、アップグレードの前に Composer の準備ができている ことを確認してください。

Drupal 8 コアのアップグレード

まず、コアの更新が利用可能かどうかを確認します:

composer update --dry-run "drupal/*"

これにより、利用可能なマイナーまたはパッチの更新が一覧表示されます。drupal/core または drupal/core-recommended で始まる行を探してください。更新が表示された場合は、次に進みます。

ワンステップ更新

経験があり、注意点を理解している場合は、次を実行します:

composer update drupal/core --with-dependencies
drush updatedb
drush cache:rebuild

core-recommended を使っている場合は、drupal/core を適宜置き換えてください。

drupal-composer/drupal-project を使って構築したサイトでは、追加の手順が必要になる場合があります。以下の特記事項を参照してください。

ステップバイステップの更新手順

  1. ファイルとデータベースをバックアップします:
    • drush sql:dump で DB をエクスポートします。
    • CLI ツールを使ってディレクトリ(vendor を除く)をバックアップします。
  2. リリースノート を確認します。
  3. メンテナンスモード を有効にします:
    drush state:set system.maintenance_mode 1 && drush cr
  4. 必要に応じてモジュール/テーマを更新します:モジュールの更新
  5. Drupal コアとその依存関係を更新します:
    composer update drupal/core --with-dependencies

    該当する場合は drupal/core-recommended を使います。

  6. 次を実行します:
    drush updatedb
    drush cache:rebuild
  7. 構成管理を使っている場合:
    drush config:export --diff
  8. ステータスレポートページとログでエラーを確認します。
  9. メンテナンスモードを無効にします:
    drush state:set system.maintenance_mode 0
    drush cache:rebuild
  10. 匿名ユーザーとしてサイトをテストします。

本番環境では

  • 一貫したバージョンにするために、composer.lock を使って composer install を実行します。
  • 本番環境で開発用の依存関係を除外するには、composer install --no-dev を使います。

Drupal 8.8.0 以降への更新に関する特記事項

実際の更新例については、PreviousNext のブログ記事 を参照してください。

/vendor ディレクトリを削除する

cd your_install_dir
rm -rf vendor

webflo/drupal-core-strict からの移行

  1. composer update
  2. git add composer.lock; git commit
  3. composer remove webflo/drupal-core-strict --no-update
  4. composer remove drupal/core --no-update
  5. composer require 'composer/installers:^1.7' --no-update
  6. rm composer.lock && rm -rf vendor
  7. composer require drupal/core-recommended:^8.8 --update-with-dependencies

webflo/drupal-core-require-dev からの移行

composer remove --dev webflo/drupal-core-require-dev
composer require --dev drupal/core-dev

パッチの更新

composer-patches を使っている場合は、パッチを reroll(再作成) し、composer.json を更新する必要があるかもしれません。

ソフト依存関係の競合を解決する

composer require --update-with-dependencies \
drupal/core:^8.8.0 \
symfony/finder:^3.4 \
symfony/filesystem:^3.4
composer require --dev --update-with-dependencies \
drupal/core-dev:^8.8.0 \
symfony/debug:^3.4
composer remove -n \
symfony/finder \
symfony/filesystem
composer remove -n --dev symfony/debug

構成とスキーマを更新する

drush updb
drush cr
drush config:export

settings.php を更新する

// 旧
$config_directories['sync'] = 'foo/bar';
// 新
$settings['config_sync_directory'] = 'foo/bar';

既知の問題と回避策

composer updatedrupal/core が更新されない場合は、次を実行します:

composer prohibits drupal/core:8.5.0

これは、更新を妨げているものを表示します。

推奨される Composer テンプレートを使ってください:既存のサイトに Composer を追加する

2020 年 1 月時点で、drupal-composer/drupal-project は Drupal 8.8 以降には推奨されなくなりました。プロジェクトテンプレートを使うためのコミュニティガイド を参照してください。

さらに読む

エラーメッセージは必ず読み、issue キューを検索してください。致命的なエラーが発生した場合は、ロールバックして、バックアップを使って更新をやり直してください。