web-dev-qa-db-ja.com

データベースの更新後にサイトが機能しない

サイトのリポジトリをローカルコンピューターに複製し、データベースをインポートして、「Composer install --with-dependencies」を実行しました。インストールが完了した後、ローカルサイトにアクセスして機能し、「drush updb -y」を実行しましたそしてそれはいくつかのエラーと警告を示しました:

    The following module is missing from the file system: aspambot       [warning]
bootstrap.inc:268
The following module is missing from the file system: phpmailer      [warning]
bootstrap.inc:268

...

PHP  27. include() /home/www/sites/zb/web/vendor/composer/ClassLoader.php:444
Drush command terminated abnormally due to an unrecoverable error.   [error]
Error: Interface 'Doctrine\Common\Reflection\ClassFinderInterface'
not found in
/home/www/sites/zb/web/core/lib/Drupal/Component/Annotation/Reflection/MockFileFinder.php,
line 14
The external command could not be executed due to an application     [error]
error.
PHP Fatal error:  Interface 'Doctrine\Common\Reflection\ClassFinderInterface' not found in /home/www/sites/zb/web/core/lib/Drupal/Component/Annotation/Reflection/MockFileFinder.php on line 14

私はDrupalを使い始めたばかりなので、これらのエラーを乗り越えられるように助けてください。解決策が簡単なように思えるかもしれませんが、何をすべきかわかりません。ありがとうございました!

5
Rusletov

composerファイルで競合している"doctrine/common":">2.8"を追加してから、composer updateを実行します。

"conflict": {
    "drupal/drupal": "*",
    "doctrine/common":">2.8"
},

問題を参照してください: https://www.drupal.org/project/drupal/issues/2986725

5
albertski

この問題が議論されている https://www.drupal.org/project/drupal/issues/2986725 へのリンクを提供してくれてありがとう。

その問題は「設計どおりに機能する」として終了しました。問題に関する最後のいくつかのコメントを見ると、その理由がわかります。この問題は、PHPキャッシュが原因で発生します。キャッシュをクリアすると(またはPHPを再起動するか、コンピューターを再起動するか、キャッシュに誤ったオートロードデータがないDockerコンテナーでPHPを使用すると)、問題は解消します。

キャッシュをクリアしても、現在のバージョンのdoctrine/commonに更新しない場合よりも副作用が少なくなります。

1
benjifisher