#C30 Drupal-CMS Automatic Updateのエラー

Drupal-CMSのプレリリース版をMacBookにインストールし触れた後、しばらく放置していたのでDrupalコアと各モジュールのアップデートを行いました。Drupal-CMSはコアプログラムとモジュールを管理画面上からアップデート可能なので、管理画面上からアップデートを行います。Drupalコアのアップデートは問題なく完了し、モジュールのアップデートを行います。

モジュールも複数アップデートする必要があります。管理画面上からアップデートするモジュールにチェックを入れる事で複数のモジュールを一度にアップデートする事が可能ですが、念の為、一つづつ慎重にアップデートします。

管理画面上からのアップデートが心配でしたが、問題なく進んでいきます。順調に進んでいくかと思っていたらAutomatic  Updateモジュールをアップデートするとエラーが出てしまいます。

エラーが出た環境

  • Macbook M1 Pro Max
  • OrbstackとDDEVによるLAMP環境
  • Drupal-CMS 1.0

Drupal-CMSプレリリース版からDrupal-CMS 1.0にアップデート

Automatic Updateモジュールを管理画面からアップデートした際にエラーが発生

発生したエラーの内容は以下になります。

エラー内容


The website encountered an unexpected error. Try again later.

LogicException: Stored hash key deleted. in Drupal\package_manager\Validator\LockFileValidator->validate() (line 122 of modules/contrib/automatic_updates/package_manager/src/Validator/LockFileValidator.php).

Symfony\Component\EventDispatcher\EventDispatcher::Symfony\Component\EventDispatcher\{closure}() (Line: 206)
Symfony\Component\EventDispatcher\EventDispatcher->callListeners() (Line: 56)
Symfony\Component\EventDispatcher\EventDispatcher->dispatch() (Line: 50)
Drupal\automatic_updates\Validation\StatusChecker->runStatusCheck() (Line: 62)
Drupal\automatic_updates\Validation\StatusChecker->run() (Line: 85)
Drupal\automatic_updates\Validation\StatusCheckRequirements->getRequirements() (Line: 30)
automatic_updates_requirements()
call_user_func_array() (Line: 355)
Drupal\Core\Extension\ModuleHandler->Drupal\Core\Extension\{closure}() (Line: 307)
Drupal\Core\Extension\ModuleHandler->invokeAllWith() (Line: 354)
Drupal\Core\Extension\ModuleHandler->invokeAll() (Line: 109)
Drupal\system\SystemManager->listRequirements() (Line: 53)
Drupal\system\Controller\SystemInfoController->status()
call_user_func_array() (Line: 123)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 593)
Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 121)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext() (Line: 97)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 183)
Symfony\Component\HttpKernel\HttpKernel->handleRaw() (Line: 76)
Symfony\Component\HttpKernel\HttpKernel->handle() (Line: 53)
Drupal\Core\StackMiddleware\Session->handle() (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle() (Line: 28)
Drupal\Core\StackMiddleware\ContentLength->handle() (Line: 32)
Drupal\big_pipe\StackMiddleware\ContentLength->handle() (Line: 116)
Drupal\page_cache\StackMiddleware\PageCache->pass() (Line: 90)
Drupal\page_cache\StackMiddleware\PageCache->handle() (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (Line: 36)
Drupal\Core\StackMiddleware\AjaxPageState->handle() (Line: 51)
Drupal\Core\StackMiddleware\StackedHttpKernel->handle() (Line: 709)
Drupal\Core\DrupalKernel->handle() (Line: 19)

Automatic Updates モジュール(automatic_updates) が composer.lock のハッシュキーを検証しようとした際に、該当するハッシュキーが削除または変更されたために発生。

考えられる原因

  1. composer.lock の不整合
  2. Automatic Updates モジュールの不具合

上記の不具合がエラーを出してしまっているのではないかと考えます。

エラーの修正.

エラーの修正を行います。composer.lockファイルの不整合は過去にも遭遇しているのでまず確認します。

composer.lockの確認


% ddev ssh
// ddevにsshで接続します。

// ZchからBashに変わります。
shinichirotakeda@drupal-cms-web:/var/www/html$ 

// shinichirotakeda@drupal-cms-web:/var/www/htmlは以降省略します。

// composer.lockファイルの確認
$ composer validate
// エラーの確認 エラーは出ていません。

$ composer update --lock
// 念の為Lockファイルを再生成してみます。

$ drush cr
// キャッシュをクリア

確認しますがエラーは消えません。composer.lockを一旦削除してcomposer installで依存関係を再インストールします。

$ rm composer.lock
// composer.lockの削除

$ composer install
// 依存関係を再インストール

$ drush cr
// キャッシュのクリア

$ drush updatedb
// DBのアップデート

確認しますがエラーが消えません。automatic_updatesのモジュールを疑います。

composer.lockの不具合ではなさそうなので、automatic_updatesのモジュールの不具合を疑います。モジュールをアンインストールし再インストールしてみます。

automatic_updatesの再インストール


$ drush pm:uninstall automatic_updates
// automatic_updatesのモジュールをアンインストールします。

The following extensions will be uninstalled: automatic_updates, automatic_updates_extensions
┌ Do you want to continue?  ───────────────────────────────────┐
│ Yes                                                          │
└──────────────────────────────────────────────────────────────┘
[success] Successfully uninstalled: automatic_updates, automatic_updates_extensions
  
 $  drush en automatic_updates -y
// automatic_updatesのモジュールを再インストールします。

[notice] automatic_updates 用の ja の翻訳を確認しました。
[notice] automatic_updates 用の ja の翻訳をダウンロードしました。
[notice] automatic_updates 用の ja の翻訳をインポートしました。
[warning] foreach() argument must be of type array|object, null given Mapping.php:31
[warning] foreach() argument must be of type array|object, null given Mapping.php:230
[notice] Updated default configuration to ja
[warning] foreach() argument must be of type array|object, null given Mapping.php:31
[warning] foreach() argument must be of type array|object, null given Mapping.php:230
[notice] Translations imported: 0 added, 28 updated, 0 removed.
[notice] The configuration was successfully updated. 200 configuration objects updated.
[notice] Message: 1 個の翻訳ファイルをインポートしました。/0/個の翻訳を追加し、/28/ 個の翻訳を更新、/0/個の翻訳を削除しました。
[notice] Message: 構成を更新できました。/200/個の構成オブジェクトが更新されました。
[success] Module automatic_updates has been installed. (Configure)
$

// 再インストールが完了

automatic_updatesのモジュールをアンインストールし、再インストールしたらエラーが消えました。

[warning] foreach() argument must be of type array|object, null givenの警告が出ていますが、管理画面を確認するとエラーは消えており問題なくアップデートされています。

今回のエラーはautomatic_updatesのモジュールに不具合があり、composer.lockのハッシュキーの検証が出来ない事で発生したエラーのようです。composer.lockを再インストールし、automatic_updatesのモジュールの再インストールを行なう事でエラーが解消されました。

インストール時のログ画面
アンインストール
インストール
翻訳
翻訳
警告

automatic_updatesモジュールのインストール時の管理画面のログを確認するとpackage_managerに関する警告が出ています。

エラーではないのでDrupal-CMSの利用に直接の影響は出ていないのですが気になるので調べてみます。

表示された警告

automatic_updatesモジュールのインストール時ターミナルに出た警告

[warning] foreach() argument must be of type array|object, null given Mapping.php:31
[warning] foreach() argument must be of type array|object, null given Mapping.php:230

管理画面のログに出たpackage_managerの警告

The following paths in /var/www/html aren't recognized as part of your Drupal site, so to be safe, Package Manager is excluding them from all stage operations. If these files are not needed for Composer to work properly in your site, no action is needed. Otherwise, you can disable this behavior by setting the package_manager.settings:include_unknown_files_in_project_root config setting to TRUE. .ddev README.md launch-drupal-cms.sh recipes

Packageマネージャーの警告は「Package Manager が認識しないファイルを無視する」となっています。この事からautomatic_updates モジュールでnull になっている配列が Package Manager から提供されるデータの可能性が高いです。

automatic_updates は package_manager を通じてパッケージの更新情報を取得します。package_manager の動作がブロックされることで、automatic_updates が必要なデータを取得できずに null を返しているのではないかと考えられます。

この警告が具体的にどう影響しているのか探してみます。

警告の影響

アップデートの必要がある際、管理画面に表示される以下のメッセージ


//
利用中の1つ以上のモジュールやテーマの最新版が入手可能です。 サイトを適切に機能させ続けるために、できるだけ早く更新するべきです。
//

コアプログラムやモジュールが最新でアップデートの必要がない場合でも上記のメッセージが管理画面上に常時表示されてしまいます。

automatic_updates モジュールは、package_manager モジュールとの依存関係があるので依存関係に不具合があるのではないかと考えられます。モジュールの破損も考えられますので、モジュールの削除や依存関係の再チェックを行なう必要があります。

記事が長くなってしまうので、以降行った解決策は次の記事にまとめます。

Conclude.

プレリリースが公開された時にインストールしたDrupal-CMSですがしばらく触れていなかったので久しぶりに管理画面にログインしたらコアプログラムとモジュールのアップデートが溜まっていたので、アップデートを行いました。

Drupal-CMSからDrupalコアを含めモジュールやテーマを管理画面上でアップデート可能になったので、管理画面上からアップデートを行いますが、automatic_updatesモジュールのアップデートでエラーが出てしまったので今回修復を行いました。エラーの解消はできましたが、automatic_updates モジュールとpackage_manager モジュールの不具合が警告として出ています。

他にも警告が出ていますので今回出ている警告の原因の修復も合わせて次回の記事でまとめます。

管理画面からのインストールが便利になったので、コアプログラムもモジュールやテーマも管理画面から行ってみましたが、モジュールによってはComposerを使用しないと依存関係に不具合が出てしまうかもしれません。

今回のケースは、プレリリースからのアップデートという環境で出た不具合なので、正式リリース版のインストールからのアップデートでは今回発生したエラーは再現しないかもしれません。

投稿日
2025-03-11
投稿者
S.Takeda
タグ
記事内容
関連記事.

DrupalやWebサイト構築の関連記事になります。宜しければご覧ください。

#C15 コンテンツとサイト構築の使い方.

Drupalはページ作成するコンテンツメニューと、サイト構築メニューでサイト構成を目的とする形に設定しないとデフォルトで用意されるページ構成から抜け出せず自由にページを構成する事が出来ません。この事についてまとめています。

Drupal Articles.

#C13 Drupal コンテンツ機能の概要 .

Drupalで実際に使用するページやブロックを作成するメニューになります。別記するサイト構築の設定と組み合わせて目的のページを作成して行きます。Drupalでページを作成する基本となる機能になります。

Drupal Articles.

#C30 Drupal-CMS Automatic Updateのエラー

プレリリースのインストールを行ったDrupal-CMSにしばらく触れなかったので正式版となったDrupal-CMS1.0にアップデートしたのですが、Automatic Updateモジュールのアップデートでエラーが出てしまいましたので修復します。

Drupal Articles.
Side Bar 01

Word Pressで制作したLife StyleのBlogをDrupalに移植し、Drupalの記事を含めて更新中です。

Drupal初学者のBlogです。

DrupalやWEBサイト構築についての記事をまとめています。

  全ての記事

  Drupalに関わること

  WEBサイト構築

  Macの環境

  AWSに関わる事

古着やファッションについての記事をまとめています。

  全ての記事

  古着について

  Fashionについて

  時計について

  写真について

  お勧めのお店

Core Drupal 10.4.5

Theme Bootstrap5 4.0.3

  Drupal

  bootstrap5

  Bootstrap

  Font Awesome

  Amazon Web Service

  Amazon Lightsail

  Bitnami

  Google reCAPTCHA