플랫폼 개선 사항
Magento Open Source 2.4.6에서는 PHP 8.2에 대한 지원을 도입했습니다. PHP 8.1은 완전히 지원됩니다.
PHP 7.4 지원은 이 릴리스에서 제거되었습니다. PHP 7.4에서는 Magento Open Source 2.4.6을 실행할 수 없습니다.
Magento Open Source은 이제 다음을 지원합니다.
-
작성기 2.2.x. Composer 1.x가 제거되었습니다.
-
Redis 7.0.x Redis 6.2와의 호환성은 유지되지만 Redis 6.2는 2024년에 사용이 종료될 예정이므로 Redis 7.0.x와 함께 이 릴리스를 배포하는 것이 좋습니다.
-
이제 OpenSearch가 Magento Open Source 온-프레미스 및 클라우드 배포에 대한 기본 검색 엔진으로 지원됩니다. Magento Open Source에 대한 독립 검색 엔진으로 지원됩니다. 이 릴리스는 OpenSearch v2.x를 지원하며 OpenSearch 2.5에서 테스트되었습니다. OpenSearch 1.x와의 호환성은 유지되지만 이 릴리스를 OpenSearch 2.x와 함께 사용하는 것이 좋습니다. OpenSearch 2.x를 사용하여 Cloud와 온-프레미스 모두에서 Magento Open Source 및 Magento Open Source 2.4.6을 설치하고 실행할 수 있습니다. 검색 엔진 필수 구성 요소.
-
Elasticsearch 8.x Elasticsearch 업그레이드를 참조하십시오.
-
MariaDB 10.6(LTS 버전). 이 릴리스는 여전히 MariaDB 10.4와 호환되지만 MariaDB 10.6으로 업그레이드하는 것이 좋습니다.
기타 업그레이드 및 교체
-
DHL 스키마가 v6.2에서 v10.0으로 마이그레이션되었습니다.
-
오래된 JavaScript 라이브러리가 최신 버전으로 업데이트되고 오래된 종속성이 제거되었습니다. 이러한 변경 사항은 이전 버전과 호환됩니다.
-
Commerce 및 Magento Open Source 코드 기반에서 PHP 7.4 호환성이 제거되었습니다.
-
호환 종속성이 새 LTS 버전으로 업그레이드되었습니다. 종속성 포함:
friendsofphp/php-cs-fixer
symfony/console
symfony/event-dispatcher
symfony/finder
symfony/process
web-token/jwt-framework
-
jquery-migrate
이(가) Commerce 및 Magento Open Source 코드 기반에서 제거되었습니다. GitHub-21406 -
jQuery/fileUpload
라이브러리를 v10.32로 업그레이드했습니다. -
수명 종료에 도달한 Zend 프레임워크(ZF1) 구성 요소가 코드 베이스에서 제거되었습니다. 이전 버전과 호환되지 않는 변경 내용을 강조 표시.합니다.
-
Php 8.2를 지원하도록 Laminas 종속성이 업데이트되었습니다.
-
laminas/laminas-dependency-plugin
작성기 플러그인이 제거되었습니다. GitHub-36515 -
Zend_Filter
을(를)laminas/laminas-filter
(으)로 대체했습니다. -
web-token/jwt-framework
을(를) v3.0.5로 업그레이드했습니다. (최신 버전) -
allure-framework/allure-phpunit
을(를) v2.x로 업그레이드했습니다. -
Chart-js
라이브러리를 v3.9.1 (으)로 업그레이드했습니다.
접근성 업데이트
이 릴리스의 초점은 보다 인지 가능하고, 작동 가능하며, 이해 가능하고 강력한 Venia(PWA)의 상점 경험을 만드는 데 있었습니다. 이러한 개선 사항은 다음과 같습니다.
- Sign in 단추의 시각적 텍스트 레이블이 이제 액세스 가능한 이름과 일치합니다. (UI 요소의 액세스 가능한 이름은 표시 레이블 텍스트로 시작하는 것이 좋습니다.)
- 상점 전면의 버튼에 설명적인 액세스 가능한 이름이 추가되었습니다.
- 검색 필터의 Has Video 확인란에 구두 설명 레이블이 추가되었습니다.
- 이제 키보드 전용 사용자는 상점 첫 화면에서 모든 페이지 기능에 액세스할 수 있습니다. 이전에는 쇼핑객이 키 입력만 사용하여 하위 탐색 링크에 액세스할 수 없었습니다.
Adobe IMS와 Adobe Commerce 통합
다음 Adobe IMS 모듈은 Adobe Commerce 및 Magento Open Source 코어 코드에서 분리되었으며 이제 별도의 메타패키지로 패키지화되었습니다.
adobe-ims
adobe-ims-api
admin-adobe-ims
새 adobe-ims-metapackage
v2.2.0은 Adobe Commerce 2.4.6 및 Magento Open Source 2.4.6과 함께 번들로 제공됩니다. 이 릴리스에서 변경된 기능이 없습니다.
Braintree
- 이탈리아와 스페인에 대한 Pay Later 단추 및 배너(메시지)가 Braintree에 대해 활성화되었습니다.
- PayPal 자격 증명 모음의 PayLater 메시징이 활성화되었습니다.
- 사기 방지 및 ACH 웹 후크를 추가했습니다. 사기 행위 방지 웹 후크는 Braintree에서 위험 결정이 내려진 경우 트리거됩니다. ACH 결제 상태가
settled
또는settlement decline
(으)로 업데이트되면 ACH 웹 후크가 트리거됩니다.
- LPM(로컬 결제 방법) 웹 후크를 추가했습니다.
GraphQL
GraphQL 성능 개선 사항은 다음과 같습니다.
범주 권한이 활성화된 범주를 쿼리할 때 응답 시간이 개선되었습니다. 카테고리 권한이 활성화되어 있고 많은 고객 그룹 또는 공유 카탈로그를 포함하는 카테고리의 제품을 쿼리할 때 응답 시간이 개선되었습니다. 이 성능 개선을 지원하는 코드 변경 사항은 다음과 같습니다.
- GraphQL resolver 작업이 최적화되었습니다.
- 데이터 공급자는 처리 중인 모든 새 제품에 대해 더 이상 런타임 캐시 데이터를 다시 설정하지 않으므로 성능이 향상되었습니다.
- 제품 권한 처리가 GraphQL 해결자에서 최적화되었습니다. 이제 제품 권한이 제품 컬렉션에 대신 이제 제품별로 적용됩니다.
addProductsToCart
돌연변이의 공유 카탈로그에서 읽을 수 있는 권한을 최적화했습니다.- 제품 권한은 제품 인라인 조각으로 최적화되었습니다.
카테고리 트리 렌더링의 최적화된 성능. categoryList
쿼리는 많은 범주가 있는 고객을 지원하도록 최적화되었습니다. 이 쿼리를 사용하여 최대 5개 수준의 중첩된 하위 범주가 있는 1500개 이상의 범주를 검색하면 판매자의 성능이 향상됩니다. 불필요한 메서드 호출을 제거하고, 카테고리 트리의 캐싱을 개선하고, 카테고리 데이터를 반복적으로 로드하여 리팩터링 코드를 통한 카테고리 하위 로드를 개선했습니다. 이 성능 개선을 지원하는 코드 변경 사항은 다음과 같습니다.
- 범주 모델에 대한 사용자 지정 특성 메타데이터 가져오기가 개선되었습니다.
- 범주 ID 가져오기가 개선되었으며
getChildren
개의 호출이 줄었습니다. - 범주 자식 로드가 개선되었습니다.
일괄 장바구니 작업 쿼리 응답 시간이 감소되었습니다. 제품 추가 돌연변이는 최대 500개의 단순 및 구성 가능한 제품을 추가할 때 쿼리 성능을 향상시키도록 최적화되었습니다. 번들 제품은 영향을 받지 않습니다. 최적화된 돌연변이는 addProductsToCart
, addConfigurableProductsToCart
, addDownloadableProductsToCart
, addSimpleProductsToCart
, addVirtualProductsToCart
,addWishlistItemsToCart
및 updateCartItems
입니다.
이제 고객 쿼리가 순서 정렬을 지원합니다. 이제 customer
쿼리의 orders
출력 개체에 정렬 필드가 있습니다. 이제 주문 번호 또는 생성 날짜별로, 그리고 오름차순 또는 내림차순으로 순서를 정렬할 수 있습니다.
새로운 돌연변이:
deleteCustomer
페이지 빌더
페이지 빌더 v.1.7.3은 Magento Open Source 2.4.6과 호환됩니다.
PWA Studio
PWA Studio v.13.0.x는 Magento Open Source 2.4.6과 호환됩니다. 여기에는 액세스 가능성을 개선하기 위한 여러 개선 사항이 포함되어 있습니다. 버그 수정에 대한 자세한 내용은 PWA Studio 릴리스를 참조하십시오. PWA Studio 버전 및 호환 가능한 Adobe Commerce 핵심 버전 목록은 버전 호환성을 참조하십시오.
알려진 문제
문제: New Relic은 현재 PHP 8.2와 호환되지 않습니다. New Relic을 실행하는 배포는 PHP 8.1에서는 Adobe Commerce 2.4.6을 실행할 수 있지만 PHP 8.2에서는 실행할 수 없습니다. 해결 방법: PHP 8.2를 지원하는 새로운 버전의 New Relic이 릴리스될 때까지 PHP 8.1에서는 Adobe Commerce 2.4.6을 실행하십시오. 이 릴리스는 2023년 여름에 예정되어 있습니다.
해결된 문제
Magento Open Source 2.4.6 코어 코드에서 수백 개의 문제를 해결했습니다.
설치, 업그레이드, 배포
- 정적 콘텐츠 배포는 여러 로케일 및 웹 사이트를 사용하는 표준 또는 소규모 배포 중에 더 이상 시간 초과되거나 실패하지 않습니다.
- 정적 콘텐츠 배포(
bin/magento set:static-content:deploy -f --strategy compact
)를 실행할 때 컴팩트 전략으로 인해 외부 도메인에 대해 잘못된 참조가 더 이상 발생하지 않습니다.
bin/magento setup:di:compile -vvv
을(를) 실행하거나-v
또는-vv
옵션을 사용하여 실행하면 실패 시 정보 메시지가 반환됩니다. GitHub-35391
- 이미 데이터 마이그레이션 도구를 실행 중인 배포에서
bin/magento setup:upgrade
명령을 실행할 때 Magento Open Source에서 더 이상 다음 예외가 발생하지 않습니다.PHP Fatal error: Declaration of Migration\Logger\Logger::addRecord(int $level, string $message, array $context = []): bool must be compatible with Monolog\Logger::addRecord(int $level, string $message, array $context = [], ?Monolog\DateTimeImmutable $datetime = null): bool in /var/www/html/vendor/magento/data-migration-tool/src/Migration/Logger/Logger.php on line 34
. GitHub-35604
- MySQL 8.0.29를 실행하는 환경에서는
bin/magento setup:db:status
명령이 더 이상 실패하지 않습니다. 이전에는 명령 출력에서 선언적 스키마가 오래되었음을 잘못 표시했습니다. GitHub-35671
composer install
명령이 더 이상.gitignore
파일을 덮어쓰지 않습니다. GitHub-32888
- Alpine Linux에서 업그레이드한 후 샘플 데이터를 제거하기 위해
bin/magento sampledata:remove
을(를) 실행하면 더 이상 다음 오류가 발생하지 않습니다.Undefined constant "MagentoHackathon\Composer\Magento\Deploystrategy\GLOB_BRACE
. GitHub-36062
composer install --no-dev
을(를) 처음 실행한 후bin/magento setup:upgrade
이(가) 성공적으로 실행됩니다. GitHub-36351
- 이제 예외 및 예외 스택 추적 항목이
var/log/exception.log
에 포함됩니다. GitHub-36054
이제 명령줄을 사용하여 암호 없이 Redis 연결을 설정할 때 Magento Open Source에서 매개 변수 유효성 검사 오류가 발생합니다.
접근성
- 이제 체크아웃 워크플로의 Proceed to Checkout, Review Order 및 Place Order 단추가 키보드 입력에서 예상대로 작동합니다.
- TAB 또는 SHIFT + TAB 을(를) 사용하여 페이지 컨트롤을 탐색할 때 단추에 포커스가 있는지 시각적으로 표시하면 이제 예상대로 작동합니다.
화면 판독기
- 이제 주문 내역 페이지의 화면 판독기에서 올바른 이미지 설명을 읽습니다.
이제 화면 판독기에 다음이 표시됩니다.
- 검색 결과에 (으)로 총 항목 수가 있습니다.
- 사용자가 키보드 컨트롤 을(를) 사용하여 로그인했을 때 로그인한 사용자 이름
- 이제 제품 검색 결과 페이지 머리글에서
<title>
요소 에 대한 올바른 값을 읽습니다. - 입력 필드가 필수인지 여부
- 아코디언 요소의 현재 상태 수정(축소 및 확장)
- 사용자가 Create an account 단추 을(를) 클릭한 후 페이지 콘텐츠를 새로 고친 경우
번들 제품
- 이제 특정 스토어 보기에 대해 API를 통해 번들 제품을 업데이트해도 동일한 번들 제품에 대한 다른 스토어 보기 데이터가 재정의되지 않습니다. 이전에는 번들 제품 옵션 제목이 다른 스토어 보기에 대한 첫 번째 옵션 제목으로 재정의되었습니다.
- 이제 네덜란드어 로케일을 사용할 때 번들 제품을 관리자 Catalog > Products 에서 필터링할 수 있습니다. 이전에는
Type: Bundle Product
에서 필터링하려고 할 때 Magento Open Source에 이 오류가 표시되었습니다.Something went wrong with processing the default view and we have restored the filter to its original state
. GitHub-35704
- 번들 제품의 특별 가격이 1000을 초과하는 경우 제품 그리드에서 더 이상 예외가 발생하지 않습니다. 이전에는 SKU로 제품을 검색하거나 Catalog > Products(으)로 이동했을 때 Magento Open Source에서 다음 오류가 발생했습니다.
Non Numeric value encountered
. GitHub-36284)
- 번들과 간단한 제품이 혼합된 주문에 대한 대변 메모 및 송장 PDF의 열이 이제 올바로 렌더링됩니다. 이전에는 열이 왜곡되거나 잘못 정렬되었습니다.
BundleProduct
조각이 포함된 GraphQL 쿼리에서items.options.product
개체에 예상대로 데이터가 포함되어 있습니다. 이전에는 일부 상황에서 개체가 null일 수 있었습니다.
- Quantity uses decimals 이(가) 활성화되면 번들 옵션의 소수점 수량이 올바르게 렌더링됩니다. 이전에는 분수 구성 요소가 아닌 정수의 정수 부분만 렌더링했습니다. 예를 들어, 수량 1.5가 1.0으로 렌더링되었습니다. GitHub-35964
- 이제 GraphQL 제품 쿼리는 쿼리되는 스토어 범위 내에서 번들 제품 옵션만 반환합니다.
- 범주에 할당되지 않았지만 번들 또는 그룹화된 제품에 대한 제품 옵션인 제품은 이제 쿼리를 보내는 고객에 대해 Allow Category Browsing 구성 설정을 사용하도록 설정하면 응답으로 반환됩니다.
캐시
- 주문된 제품의 재고가 바닥나지 않는 한 주문 이행 후 전체 페이지 캐시가 더 이상 플러시되지 않습니다. 이전에는 출하가 생성될 때마다 범주에 대한 캐시가 삭제되었습니다.
- 이제 L2 캐시가 구성되고 원격 데이터가 부분적으로 제거될 때 데이터가 성공적으로 캐시됩니다. 이전에는 해당 데이터의 해시 없이 데이터 캐시만 플러시한 후 데이터 해시가 존재하는 동안에는 새 캐시가 저장되지 않았습니다.
- 캐싱을 방해하는
CatalogUrlResolverIdentity
및CmsUrlResolverIdentity
의 오류를 수정했습니다. 이로 인해 여러 요청에 대한 경로 쿼리 캐싱이 영향을 받았습니다.
장바구니 및 체크아웃
- 장바구니에 단순 제품의 최소 수량이 포함되어 있으면 쇼핑객은 이제 장바구니에 추가 품목을 추가할 수 있습니다.
- 저장소 통화와 기본 통화가 동일할 때 이제 장바구니 데이터를 검색하기 위한 REST API 호출에서 동일한
grand_total
및base_grand_total
값을 반환합니다. GitHub-34649
- 내보낸 값 Maximum Qty Allowed in Shopping Cart 이(가) 이제 관리 구성 설정에 설정된 기본값과 일치합니다.
- 이제 Magento Open Source은 배송 할인이 적용된 주문 환불의 총 합계를 올바르게 계산합니다.
- 이제 Google reCAPTCHA가 상점 주문 시 예상대로 작동합니다. 이전에 구매자가 주문을 처음 시도하기 전에 Google ReCAPTCHA를 먼저 선택하지 않은 경우 Magento Open Source에 이러한 오류가 표시되었습니다.
ReCaptcha validation failed, please try again
및No such cart with id = ID
.
- 이제 CAPTCHA 이미지 새로 고침은 관리자 구성 설정을 적용하며 이 설정이 비활성화될 때 트리거되지 않습니다. 기존에는 설정 활성화 여부와 관계없이 결제 방법이 변경될 때마다 새로 고침이 트리거됐다. GitHub-34855
- 이제 Magento Open Source은 구매자가 장바구니를 업데이트하지 않고 장바구니 페이지의 제품 수량을 변경한 후 다음 페이지로 이동하려고 할 때 구매자를 다음 페이지로 리디렉션하기 전에 예상대로 확인 팝업을 표시합니다.
- 관리자는 이제 장바구니에서 제품 수량을 줄인 후 장바구니에서 제품을 줄일 수 있습니다. 이전에는 쇼핑객이 제품 수량을 줄이려고 할 때 Magento Open Source에서 다음 오류가 발생했습니다.
The requested qty is not available
. GitHub-35780
- 다중 배송 체크아웃 중에 제품 수량이 구성된 최대값을 초과할 때 Magento Open Source에서 더 이상 JavaScript 콘솔에 오류가 발생하지 않습니다. 대신 이제 Magento Open Source에 유익한 오류 메시지가 표시됩니다. GitHub-36184
- 쇼핑객이 키보드의 아래쪽 화살표 키를 사용하여 제품 수량을 변경할 때 장바구니 페이지의 항목 수량은 더 이상 음수로 표시되지 않습니다. GitHub-36299
- 구매자는 구매자가 속한 고객 그룹을 변경한 후 이제 허용되지 않는 범주의 제품을 더 이상 장바구니에 추가할 수 없습니다. 이제 Magento Open Source은 권한 구성 설정이 변경되면 특정 범주에 대한 고객 그룹 권한 액세스를 확인합니다.
- 고객 장바구니는 관리자 주문을 만들기 전에 더 이상 비워지지 않으며 주문이 취소되거나 중단되면 이제 장바구니 콘텐츠가 복원됩니다. 이제 주문 생성 후에만 장바구니에서 항목이 제거됩니다. 이전에는 관리자 사용자가 관리자 관리 장바구니 페이지에서 주문을 만들려고 할 때마다 장바구니가 비어 있었습니다.
bin/magento catalog:image:resize
을(를) 실행한 후 미니 장바구니에 올바른 제품 이미지가 표시됩니다. 이전에는 모든 이미지가 기본 제품 자리 표시자 이미지로 바뀌었습니다. GitHub-35535
- 이제 배송 주소에 확장 속성이 포함되어 있으면 체크아웃을 성공적으로 완료할 수 있습니다. 이전에는 Magento Open Source에서 다음 오류가 발생했습니다.
Object of class Magento\Quote\Api\Data\AddressExtension could not be converted to string
. GitHub-34202
- 필수 제품 옵션에 값이 없는 경우
addBundleProductsToCart
돌연변이로 인해 더 이상 견적에 제품이 추가되지 않습니다. GitHub-25676
- 이제 Magento Open Source은 권한이 부족한 장바구니에 제품을 추가할 때
addProductsToCart
돌연변이가 실패하면 정보 메시지를 반환합니다.
- 빠른 주문 을 사용하여 사용 가능한 재고를 초과하는 수량의 제품을 장바구니에 추가하면 Magento Open Source에서 더 이상 오류가 장바구니에 표시되지 않습니다.
장바구니 가격 규칙
- 이제 규칙을 만드는 동안 설정된 장바구니 가격 규칙 무료 배송 옵션이 예상대로 주문에 적용됩니다. 이전에는 규칙을 만들 때 적용된 무료 배송 옵션이 체크아웃 중에 무시되었고, 규칙을 적용할 때 무료 배송이 허용되지 않았습니다. GitHub-35013
- 이제 제품에 대한
sales_order_item
테이블의discount_percent
열이 품목 할인 수량이 설정되지 않았거나 주문 품목 수량보다 크거나 같은 경우 예상대로 할인 비율로 채워집니다. 이전에는 이 제품에 장바구니 가격 규칙이 적용되면 이 열이 채워지지 않았습니다.
카탈로그
- 제품 목록 위젯에 로그인한 구매자에 대해 더 이상 잘못되거나 캐시된 가격이 표시되지 않습니다. 이제 홈 페이지 위젯에 표시되는 가격은 쇼핑객 주소와 일치하며 쇼핑객이 주소를 업데이트하면 업데이트됩니다. 이전에는 브라우저 캐시가 고객 그룹 세금 규칙에 따라 홈페이지의 제품 가격을 업데이트하지 않았습니다.
- 이제 제품 비교 목록 기능이 다중 웹 사이트 배포에서 올바르게 작동하며 웹 사이트에 따라 다릅니다.
- 제품 세부 사항 페이지를 다시 로드할 때 Magento Open Source에 이전 페이지의 데이터가 더 이상 표시되지 않습니다. 이전에는 제품 세부 사항 페이지를 다시 로드할 때 첫 번째 탭의 데이터가 새로 로드된 데이터와 잠시 병합되었습니다.
- 이제 예상대로 모바일 장치의 메인 메뉴에서 하위 범주가 있는 범주를 확장할 수 있습니다. 이전에는 모바일 배포에서 하위 범주가 있는 범주를 열거나 확장할 수 없었습니다. GitHub-35329
- 이제 제품이 새 웹 사이트 또는 스토어에 지정되면 범주 목록이 예상대로 업데이트됩니다. 이전에는 제품 가격 인덱서가 유효하지 않은 것으로 표시되지 않았으며 이후에 예상대로
cron
실행 시 다시 트리거되었습니다. 그 결과 해당 상품의 가격항목이 가격지수표에서 누락되어 신규점포나 홈페이지에는 표시되지 않았다.
- Display Out of Stock Products 구성 설정을 사용하면 상점 인벤토리 수가 정확해집니다. GitHub-35899
- Allow All Products Per Page 설정을 사용하면 범주 페이지가 더 이상 비어 있지 않습니다. GitHub-35900
- Display Out of Stock Products 구성 옵션이 활성화되면 이제 예상대로 작동합니다. 이전에는 관리자에서 이 옵션이 활성화되면 모든 제품이 품절로 상점 앞에 표시되었습니다. GitHub-35898
- 이제 부울 속성으로 제품 정렬이 예상대로 작동합니다. GitHub-36390
- 카탈로그 가격 규칙 할인은 더 이상 고정 가격 사용자 정의 제품 옵션에 적용되지 않지만 제품의 원래 가격에만 적용됩니다.
- 이제 카탈로그 가격 규칙은 선택한 범위를 고려하며 속성에 규칙과 일치하는 옵션 값이 있는 웹 사이트의 제품에만 적용됩니다. 이전에는 규칙이 다중 사이트 배포에서 선택한 범위를 고려하지 않았습니다. GitHub-36049
- 이제 쇼퍼가 내 장바구니 페이지에서 구성 가능한 제품을 수정할 때 제품 세부 사항 페이지에서 견본 옵션 색상 및 크기 속성이 미리 선택됩니다. (jQuery 3.x 버전은 이제
swatchRenderer
위젯 이름을 지원하며, 이 이름은 이제 카멜 표기법입니다.) 이전에는 견본 옵션이 미리 선택되지 않았습니다.
- 이제 고객이 가격 하락 경고를 구독하면 제품 가격 하락에 대한 알림을 받게 됩니다. 이전에는 애플리케이션 수준 캐싱으로 인해 가격 하락 알림이 항상 전송되지 않았습니다.
- is not one of 조건을 가진 SKU를 기반으로 하는 카탈로그 규칙이 이제 예상대로 작동합니다.
- Magento Open Source은 더 이상 범주 경로를 기반으로 한 한 한 범주가 다른 범주의 상위 범주로 잘못 간주하지 않습니다. 이전에는 두 범주가 인접하여 있고 한 범주 ID가 다른 범주의 범주 ID로 시작하는 경우 Adobe Commerce에서는 해당 범주의 상위 범주가 동일하다고 간주했습니다. GitHub-32464