-

Jak zaktualizować Drupal 8, 9 lub 10 do Drupala 11

Aktualizacja do Drupala 11 to kolejny duży krok dla wielu serwisów wciąż siedzących na Drupalu 8, 9 czy 10. Wsparcie bezpieczeństwa dla starszych wydań kończy się według ustalonego harmonogramu, a każda nowa wersja daje lepszą wydajność, świeże zależności i kod, który łatwiej utrzymać. W tym przewodniku pokazuję pełną ścieżkę upgrade’u: od Drupala 8 i 9, przez Drupala 10.3+, aż do Drupala 11, razem z planowaniem PHP, modułami contributed, weryfikacją kodu custom i poleceniami Composera. Kontekst Drupala 11 znajdziesz w naszym przeglądzie premiery Drupala 11. Jeśli dopiero szacujesz zakres pracy, zajrzyj do artykułu o tym, jak przygotować aktualizację wersji Drupala.

W tym artykule:

Dlaczego warto zaktualizować do Drupala 11?

Drupal 11 wyszedł w 2024 roku i kontynuuje linię nowoczesnego Drupala opartego na Symfony 6 i PHP 8.3+. Zostawanie na niewspieranych wersjach oznacza jedno: brak poprawek bezpieczeństwa z Drupal.org. Drupal 9 zakończył wsparcie w listopadzie 2023, a Drupal 10 idzie tym samym cyklem. Aktualizacja to nie tylko nowe funkcje; to utrzymanie serwisu na wspieranym stacku i zgodność z aktualnymi standardami webowymi.

Drupal 11 rozwija Drupala 10: podnosi zależności, wyrzuca legacy code i kręci dalej nad wydajnością. Jeśli porównujesz długoterminowe opcje ze starych wersji, w naszym porównaniu Drupala 7 vs Drupala 11 zobaczysz, jak daleko zaszła platforma. Serwisy na Drupalu 7 powinny najpierw przeczytać, jak przygotować się na Drupal 7 end of life.

Czy można przejść bezpośrednio do Drupala 11?

W większości realnych projektów najbezpieczniejsza ścieżka do Drupala 11 nie prowadzi jednym skokiem ze starej wersji na najnowszą. Stronę na Drupalu 8 lub 9 trzeba najpierw doprowadzić do wspieranej wersji Drupala 10. Dokumentacja Drupal.org dla Drupala 11 wskazuje Drupala 10.3 albo nowszego jako etap przed przejściem na Drupala 11, bo starsze kroki aktualizacji nie są już obecne w Drupalu 11.

To ważne przy szacowaniu pracy. Zadanie nie polega tylko na zmianie wersji core w Composerze. Zespół musi sprawdzić wymagania hostingu, zaktualizować moduły contributed, wyrzucić przestarzałe API z kodu custom i przetestować serwis po każdym większym kroku.

Co zmieniło się między Drupalem 10 a Drupalem 11?

Drupal 11 dopracowuje platformę, zamiast przebudowywać ją od zera. Spodziewaj się aktualizacji zależności, usunięcia deprecated API i kilku modułów wyciętych z core. Przejście z Drupala 10 idzie zwykle łagodniej niż starsze skoki major, ale planowanie i tak ma znaczenie.

Wymagania platformy

  • PHP 8.3 lub nowszy jest wymagany dla Drupala 11 (Drupal 10 wymagał PHP 8.1+).
  • Symfony 6.4+ i zaktualizowane biblioteki JavaScript dostarczane z core.
  • Wersje baz danych pozostają zbliżone do Drupala 10: MariaDB 10.3.7+, MySQL 5.7.8+, PostgreSQL 12+, SQLite 3.26+.

Usunięte moduły i motywy core

Kilka rozszerzeń oznaczonych jako deprecated w Drupalu 10 znika w Drupalu 11, m.in. Actions UI, Activity Tracker, Book, Forum, Statistics i Tour. Single Directory Components (SDC) oraz Help Topics są w core w innej formie; w starej wersji uznaje się je za obsolete. Przed upgrade’em albo zrezygnuj z tych modułów w Drupalu 10, albo zainstaluj zamienniki contributed na Drupalu 10.3+.

Motywy usunięte wcześniej (Classy, Bartik, Stable, Seven) nadal są dostępne jako projekty contributed, jeśli serwis od nich zależy.

Jak przygotować się do aktualizacji Drupala?

Zacznij od pełnej kopii zapasowej plików i bazy danych. Sprawdź, czy hosting obsługuje wersje PHP i bazy wymagane przez docelową wersję Drupala. Przygotuj kopię lokalną albo staging, gdzie odpalisz Upgrade Status, zastosujesz aktualizacje Composera i przetestujesz wszystko bez ryzyka dla ruchu produkcyjnego.

Udokumentuj modyfikacje plików scaffold, np. .htaccess czy settings.php. Drupal 11 podczas upgrade’u nadpisuje wszystkie pliki scaffold core; zamierzone zmiany trzeba będzie wprowadzić jeszcze raz.

Co sprawdzić przed aktualizacją do Drupala 11?

Skorzystaj z tej checklisty, zanim zaplanujesz okno aktualizacji do Drupala 11:

  • potwierdź wersję PHP i stack hostingowy przed ustaleniem terminu,
  • zaktualizuj Drupal core do wymaganego etapu pośredniego (Drupal 10.3+),
  • uruchom Upgrade Status na obecnym serwisie przed major upgrade’em,
  • podbij moduły contributed do wersji zgodnych z Drupalem 11,
  • sprawdź moduły i motywy custom przez Upgrade Status oraz Rector,
  • przejrzyj ograniczenia Composera, patche i wersję Drusha,
  • przetestuj workflow redakcyjne, formularze, integracje i cache po upgrade.

Jak zaktualizować z Drupala 8?

Drupal 8 zakończył wsparcie w listopadzie 2021. Nie ma wspieranej ścieżki z Drupala 8 prosto do Drupala 11. Zaplanuj upgrade etapami: Drupal 8, Drupal 9, Drupal 10.3+, Drupal 11.

Na początek zajrzyj do artykułu Drupal 8 vs Drupal 9 oraz do ogólnego przeglądu procesu migracji strony. Każdą wersję major traktuj jak osobną fazę projektu, z osobnym testowaniem i wdrożeniem.

Jak zaktualizować z Drupala 9 do Drupala 10?

Jeśli serwis siedzi na Drupalu 9, aktualizacja do Drupala 10 to obowiązkowy etap pośredni przed Drupalem 11. Proces ma kilka faz. Nasz przewodnik Drupal 10, funkcje i upgrade opisuje zmiany w tej wersji.

1. Aktualizacja PHP do wersji 8.1 lub wyższej

Drupal 10 wymaga PHP 8.1+. Zanim zmienisz PHP na serwerze, sprawdź, czy moduły contributed i kod custom obsługują docelową wersję. PHP_CodeSniffer i PHP Compatibility pomagają wcześnie wyłapać problemy ze składnią i rozszerzeniami.

2. Aktualizacja Drupala 9 do najnowszej wersji 9.x

Wejdź co najmniej na Drupala 9.4.4, a przed skokiem do Drupala 10 zalecana jest najnowsza wersja 9.5.x:

composer update "drupal/core-*" --with-all-dependencies
drush cr -y
drush updb -y
drush cex -y

3. Odinstalowanie deprecated motywów core

Classy, Bartik, Stable i Seven zostały wyrzucone z core Drupala 10. Odinstaluj je w /admin/appearance, jeśli nadal są aktywne. Gdy motywy custom rozszerzają te bazy, zainstaluj zamienniki contributed:

composer require drupal/seven
composer require drupal/classy
composer require drupal/bartik
composer require drupal/stable

4. Migracja do CKEditora 5

Drupal 10 domyślnie używa CKEditora 5. Nowy edytor został napisany od zera, więc nie każda wtyczka z CKEditora 4 ma bezpośredni odpowiednik. Sprawdź kompatybilność wtyczek w dokumentacji CKEditora 5, zanim zmienisz formaty w /admin/config/content/formats. Potem odinstaluj stary moduł CKEditor.

5. Aktualizacja modułów przez Upgrade Status

Zainstaluj i włącz Upgrade Status, a potem skanuj w /admin/reports/upgrade-status:

composer require drupal/upgrade_status
drush en upgrade_status -y

Napraw zgłoszenia w kodzie custom. Podbij moduły contributed do wersji wspierających Drupala 10. Gdy nie ma kompatybilnej wersji, sprawdź issue queue, nałóż patche albo skorzystaj z wtyczki Drupal Lenient Composer:

composer require mglaman/composer-drupal-lenient
composer config --merge --json extra.drupal-lenient.allowed-list '["module_name"]'

Usuwaj problemy kompatybilności, aż Upgrade Status pokaże czysty wynik dla Drupala 10.

6. Aktualizacja Drupal core do wersji 10

Przejrzyj composer.json i wyrzuć nieaktualne patche. Potem zaktualizuj constrainty core:

composer require 'drupal/core-recommended:^10' 'drupal/core-composer-scaffold:^10' 'drupal/core-project-message:^10' --update-with-dependencies --no-update
composer require 'drush/drush:^12' --no-update
composer update
drush cr -y
drush updb -y
drush cex -y

Jeśli używasz drupal/core-dev, dodaj --dev do linii core-dev. Przy konfliktach zależności najpierw odpal composer update --dry-run.

7. Test lokalny, potem wdrożenie

Przetestuj formularze, nawigację, workflow redakcyjne, integracje i cache lokalnie albo na stagingu. Wypuść na serwer testowy przed produkcją. Tuż przed cutoverem jeszcze raz sprawdź hosting i kopie zapasowe.

Jak zaktualizować z Drupala 10 do Drupala 11?

Gdy serwis działa na Drupalu 10.3.0 lub nowszym, możesz szykować aktualizację do Drupala 11. Drupal.org usuwa hooki aktualizacji z wydań sprzed 10.3, więc ten etap pośredni jest obowiązkowy.

1. Potwierdzenie PHP 8.3+ i hostingu

Drupal 11 wymaga PHP 8.3.0 albo nowszego. Najpierw zaktualizuj PHP na stagingu i jeszcze raz przejedź testy, zanim ruszysz produkcję.

2. Moduły deprecated i zmiany scaffold

Odinstaluj lub zastąp moduły core wycinane w Drupalu 11 (Book, Forum, Statistics i inne wymienione wyżej). Zapisz reguły custom w plikach scaffold, żeby móc je przywrócić po upgrade.

3. Aktualizacja kodu contributed i custom

Odpal ponownie Upgrade Status pod Drupala 11. Zaktualizuj każdy moduł contributed do kompatybilnej wersji:

composer require drupal/webform:^6.2 --no-update

Dla kodu custom skorzystaj z Drupal Rectora razem z Upgrade Status, żeby wymienić deprecated API. Gdy moduł wymaga wersji mostkowej, poszerz constrainty, np. "drupal/linkit": "^6.1 || ^7.0".

4. Aktualizacja core i Drusha przez Composera

W katalogu głównym Drupala nadaj prawa zapisu do plików settings, a potem zaktualizuj constrainty:

chmod u+w web/sites/default
chmod u+w web/sites/default/*settings.php
chmod u+w web/sites/default/*services.yml

composer require 'drupal/core-recommended:^11' \
  'drupal/core-composer-scaffold:^11' \
  'drupal/core-project-message:^11' --no-update

composer require 'drupal/core-dev:^11' --dev --no-update
composer require 'drush/drush:^13' --no-update

composer update --dry-run
composer update

drush updatedb:status
drush updatedb
drush cex -y

chmod 755 web/sites/default
chmod 644 web/sites/default/*settings.php
chmod 644 web/sites/default/*services.yml

5. Testy po upgrade

Wyeksportuj konfigurację, odpal testy automatyczne, jeśli są dostępne, przejdź krytyczne ścieżki i śledź logi przez drush watchdog:tail. Uruchom cron i sprawdź wyszukiwarkę, cache oraz wysyłkę formularzy.

Jakie problemy mogą pojawić się podczas aktualizacji Drupala?

Nawet po solidnym przygotowaniu upgrade wyciąga przewidywalne kłopoty. Znajomość ich z wyprzedzeniem skraca debugowanie.

Funkcje deprecated i usunięte

Kod, który śmigał w Drupalu 9, może wołać API wycięte w Drupalu 10 albo 11. Upgrade Status i Rector pomogą je znaleźć i naprawić; moduły contributed czasem wymagają patchy z issue queue.

Wymagane accessCheck() w entity queries

Drupal 10+ wymaga ::accessCheck() w content entity queries przed wykonaniem. Brak wywołań daje błędy runtime w kodzie custom i contributed.

Usunięte jQuery once

Wtyczka jQuery once zniknęła z core. Podmień core/jquery.once na core/once w plikach libraries.yml i używaj funkcji once() w JavaScripcie zamiast $.once().

Niekompatybilne moduły contributed

Gdy nie ma wydania pod Drupala 11, sprawdź issue queue, nałóż patch od społeczności albo tymczasowo wykorzystaj endpoint Lenient Composera. Zajrzyj też do artykułu o tym, dlaczego warto migrować ze starych wersji Drupala, nawet jeśli luki modułowe wydłużają harmonogram.

Konflikty zależności Composera

Patche, jawne piny core i nieaktualne constrainty często blokują composer update. composer why-not drupal/core ^11 wskaże blokery; wyrzuć je przed dry runem.

Które polecenia Composera pomagają przy aktualizacji Drupala?

Te polecenia wracają regularnie na ścieżce aktualizacji do Drupala 11:

  • composer why-not drupal/core ^11, lista pakietów, które blokują podbicie core.
  • composer require 'drush/drush:^13' --no-update, przygotowuje Drusha bez natychmiastowej instalacji.
  • composer update --dry-run, symuluje aktualizację i pokazuje konflikty.
  • composer update "drupal/core-*" drush/drush --with-all-dependencies, ogranicza zakres aktualizacji do core i Drusha, gdy trzeba.

Potrzebujesz wsparcia w zaplanowaniu bezpiecznej ścieżki do Drupala 11?

Aktualizacja z Drupala 8, 9 albo 10 do Drupala 11 to projekt wieloetapowy: pośrednie wersje core, aktualizacje PHP, kompatybilność modułów i testy etapami. Zespoły, które olewają planowanie, często niedoszacowują robotę przy kodzie custom i modułach contributed między wersjami major.

Jeśli potrzebujesz wsparcia przy oszacowaniu albo wykonaniu upgrade’u, robimy audyty readiness Drupala 10/11, aktualizacje Composera i wdrożenia produkcyjne. Sprawdź nasze usługi aktualizacji do Drupala 11 albo usługi Drupal przy dalszym utrzymaniu po starcie.

-