Ostatni dzień 2024 roku to dobry moment na podsumowanie zmian w Magento 2.4.8 które pojawiło się w tym roku. Największa zmiana techniczna to oficjalne wsparcie PHP 8.4 i przejście z Elasticsearch na OpenSearch jako domyślny silnik wyszukiwania. Przeglądam co to oznacza dla istniejących projektów i jak wygląda migracja.
PHP 8.4 – oficjalne wsparcie
Magento 2.4.8 jako pierwsza wersja oficjalnie wspiera PHP 8.4. Co to oznacza w praktyce:
- Możesz używać property hooks, asymmetric visibility i BcMath\Number w module kodzie bez obaw o kompatybilność z platformą
- Core Magento został zaktualizowany żeby nie generować deprecated warnings na PHP 8.4 (głównie implicit nullable parameters)
- Zewnętrzne moduły nadal mogą nie być gotowe – sprawdź przed upgrade
# Sprawdź kompatybilność zainstalowanych modułów z PHP 8.4
composer require --dev phpcompatibility/php-compatibility
# Skanuj vendor/
vendor/bin/phpcs \
--standard=PHPCompatibility \
--runtime-set testVersion 8.4 \
--extensions=php \
vendor/VENDOR_NAME/ 2>/dev/null | grep -E "ERROR|WARNING" | head -50
# Sprawdź konkretny moduł zewnętrzny
vendor/bin/phpcs \
--standard=PHPCompatibility \
--runtime-set testVersion 8.4 \
vendor/some-vendor/some-module/
OpenSearch jako domyślny silnik wyszukiwania
Elasticsearch 7.x zbliża się do End of Life, a Elastic zmienił licencję na SSPL (niekompatybilną z Open Source). Magento 2.4.8 ustawia OpenSearch 2.x jako domyślny i zalecany silnik wyszukiwania. OpenSearch to fork Elasticsearch 7.x pod Apache 2.0 – API jest kompatybilne, migracja jest prosta.
# Konfiguracja OpenSearch w Magento 2.4.8 bin/magento config:set catalog/search/engine opensearch bin/magento config:set catalog/search/opensearch_server_hostname opensearch bin/magento config:set catalog/search/opensearch_server_port 9200 bin/magento config:set catalog/search/opensearch_index_prefix magento2 # Reindeksacja po zmianie silnika bin/magento indexer:reindex catalogsearch_fulltext bin/magento cache:flush
# docker-compose - zamień Elasticsearch na OpenSearch
services:
opensearch:
image: opensearchproject/opensearch:2.11.0
environment:
- discovery.type=single-node
- "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
- plugins.security.disabled=true # wyłącz w dev
- bootstrap.memory_lock=true
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- opensearch_data:/usr/share/opensearch/data
ports:
- "9200:9200"
opensearch-dashboards:
image: opensearchproject/opensearch-dashboards:2.11.0
ports:
- "5601:5601"
environment:
OPENSEARCH_HOSTS: '["http://opensearch:9200"]'
depends_on:
- opensearch
Migracja z Elasticsearch 7 na OpenSearch 2
# Opcja 1: Czysta instalacja OpenSearch (zalecane dla nowych projektów)
# Zatrzymaj ES, uruchom OpenSearch, reindeksuj
# Opcja 2: Migracja danych (istniejące projekty)
# OpenSearch może odczytać snapshoty z Elasticsearch 7.x
# Krok 1: Utwórz snapshot w Elasticsearch
curl -X PUT "http://elasticsearch:9200/_snapshot/my_backup" -H 'Content-Type: application/json' -d '{
"type": "fs",
"settings": { "location": "/tmp/es-snapshot" }
}'
curl -X PUT "http://elasticsearch:9200/_snapshot/my_backup/snapshot_1" -d '{
"indices": "magento2*",
"include_global_state": false
}'
# Krok 2: Zarejestruj repozytorium w OpenSearch
curl -X PUT "http://opensearch:9200/_snapshot/my_backup" -H 'Content-Type: application/json' -d '{
"type": "fs",
"settings": { "location": "/tmp/es-snapshot" }
}'
# Krok 3: Przywróć snapshot
curl -X POST "http://opensearch:9200/_snapshot/my_backup/snapshot_1/_restore"
# Krok 4: Zaktualizuj konfigurację Magento i uruchom reindeksację
bin/magento config:set catalog/search/engine opensearch
bin/magento indexer:reindex catalogsearch_fulltext
Nowe funkcje Magento 2.4.8
Async reindex – indeksowanie bez blokowania
# Magento 2.4.8 wprowadza asynchroniczne reindeksowanie # Zmiany są kolejkowane i przetwarzane w tle przez consumer # Włącz async reindex dla indekserów bin/magento config:set indexer/reindex_schedule/enabled 1 # Uruchom consumer który przetwarza zmiany z kolejki bin/magento queue:consumers:start indexer.reindex.all.indexers # Status indekserów w trybie async bin/magento indexer:status
Ulepszone Adobe Commerce Services
<?php // Magento 2.4.8 - ulepszone App Framework dla modułów SaaS // (dotyczy głównie Adobe Commerce, nie Community Edition) // Nowe interfejsy dla pluginów katalogowych przez Adobe Commerce Services: // - Live Search 4.x - natywne wyszukiwanie przez SaaS // - Product Recommendations 6.x - rekomendacje ML // - Catalog Service 1.x - GraphQL API dla headless // Dla Community Edition - bez większych zmian w tym obszarze // Skupienie na PHP 8.4 compat i OpenSearch migracji
Zmiany w Composer i autoloader
# Magento 2.4.8 wymaga Composer 2.7+ composer --version # sprawdź wersję # Nowe reguły dla generated/ directory # PHP 8.4 Lazy Objects częściowo zastępują generowane Proxy # Magento może w przyszłości zrezygnować z generowania niektórych klas # Upgrade projektu do Magento 2.4.8 composer require magento/product-community-edition:2.4.8 --no-update composer update --with-all-dependencies # Po update bin/magento setup:upgrade bin/magento setup:di:compile bin/magento setup:static-content:deploy -f bin/magento cache:flush
Checklist upgrade do Magento 2.4.8
| Krok | Polecenie / akcja | Uwagi |
|---|---|---|
| Backup bazy i plików | mysqldump + rsync | Obowiązkowe |
| Sprawdź PHP 8.4 compat modułów | phpcs –standard=PHPCompatibility | Zewnętrzne moduły mogą mieć problemy |
| Uruchom upgrade na staging | composer update + setup:upgrade | Nigdy nie zaczynaj od produkcji |
| Migracja na OpenSearch | config:set + reindeksacja | Jeśli używałeś Elasticsearch 7 |
| Smoke tests | Checkout, logowanie, wyszukiwanie | Kluczowe flow biznesowe |
| Performance test | Blackfire / k6 | Porównaj z wersją przed upgrade |
Podsumowanie roku 2024
2024 był rokiem PHP 8.4 i dojrzewania ekosystemu Magento headless. Property hooks i asymmetric visibility wchodzą do codziennego kodu. OpenSearch zastępuje Elasticsearch jako domyślny silnik wyszukiwania – migracja jest prostsza niż można się spodziewać. Hyvä Theme umocniło swoją pozycję jako de facto standard dla nowych projektów gdzie SEO i wydajność są priorytetem. Na 2025 rok patrzę z ciekawością na to jak PHP 8.4 features wejdą do core Magento i jak ewoluuje ekosystem AI tooling dla PHP developerów.
