prosource

Uncatched ArgumentCountError: array_merge()가 알 수 없는 명명된 매개 변수를 허용하지 않습니다.

probook 2023. 9. 20. 20:24
반응형

Uncatched ArgumentCountError: array_merge()가 알 수 없는 명명된 매개 변수를 허용하지 않습니다.

워드프레스를 위해 테마를 설치하려고 하면 이 오류가 나타납니다.

Fatal error: Uncaught ArgumentCountError: array_merge() does not
accept unknown named parameters in
D:\xampp\htdocs\wordpress\wp-includes\widgets.php:1261

Stack trace:
#0
D:\xampp\htdocs\wordpress\wp-includes\widgets.php(1261):
array_merge(wp_inactive_widgets: Array, sidebar-1: Array, sidebar-2:
Array, sidebar-3: Array)
#1
D:\xampp\htdocs\wordpress\wp-includes\widgets.php(1216):
retrieve_widgets(true)
#2
D:\xampp\htdocs\wordpress\wp-includes\class-wp-hook.php(289):
_wp_sidebars_changed('Twenty Twenty')
#3 D:\xampp\htdocs\wordpress\wp-includes\class-wp-hook.php(311):
WP_Hook->apply_filters(NULL, Array)
#4
D:\xampp\htdocs\wordpress\wp-includes\plugin.php(478):
WP_Hook->do_action(Array)
#5
D:\xampp\htdocs\wordpress\wp-includes\theme.php(2974):
do_action('after_switch_th...', 'Twenty Twenty', Object(WP_Theme))
#6
D:\xampp\htdocs\wordpress\wp-includes\class-wp-hook.php(287):
check_theme_switched('')
#7
D:\xampp\htdocs\wordpress\wp-includes\class-wp-hook.php(311):
WP_Hook->apply_filters(NULL, Array)
#8
D:\xampp\htdocs\wordpress\wp-includes\plugin.php(478):
WP_Hook->do_action(Array)
#9
D:\xampp\htdocs\wordpress\wp-settings.php(540): do_action('init')
#10
D:\xampp\htdocs\wordpress\wp-config.php(90):
require_once('D:\\xampp\\htdocs...')
#11
D:\xampp\htdocs\wordpress\wp-load.php(37):
require_once('D:\\xampp\\htdocs...')
#12
D:\xampp\htdocs\wordpress\wp-blog-header.php(13):
require_once('D:\\xampp\\htdocs...')
#13
D:\xampp\htdocs\wordpress\index.php(17):
require('D:\\xampp\\htdocs...')
#14 {main} thrown in
D:\xampp\htdocs\wordpress\wp-includes\widgets.php on line 1261

제시된 오류 메시지에 대한 컨텍스트를 제공하지 않았기 때문에 이 질문은 잘 알려지지 않았습니다.WordPress 코드 내에서 오류가 발생한 것으로 보아 이 오류를 유발하는 기본 함수 호출을 직접 제어할 수 없습니다.PHP 8.0+가 배포된 시스템에서 이전 버전의 WordPress를 실행하고 있는 것으로 추측됩니다(아래 설명 참조).WordPress를 업그레이드하거나 PHP 7.4로 다운그레이드합니다.

이 오류가 코드에 저장된 이유에 대한 답을 찾기 위해 이런 방식으로 오는 다른 사람들에게 이 오류는 PHP 8.0의 새로운 기능인 'Named Parameters'와 관련이 있습니다.의 경우array_merge, 문자열 키 배열을 사용하여 다음과 같은 방식으로 오류를 호출할 경우 오류가 발생할 수 있습니다.

call_user_func_array('array_merge', [
    'key1'=>['abc', 'def'], 
    'key2'=>['ghi', 'jkl']
]);

-> Error

왜냐하면call_user_func_array최상위 배열 키를 매개 변수 이름으로 해석합니다.array_merge, 그리고 이 키들은 함수 인수와 일치하지 않습니다.

여기서 해결책은 사용하는 것입니다.array_values먼저 열쇠를 벗기는 방법:

call_user_func_array('array_merge', array_values([
    'key1'=>['abc', 'def'], 
    'key2'=>['ghi', 'jkl']
]));

-> ['abc','def','ghi','jkl']

나는 노력했다.composer update,composer self-update마지막으로 이 문제만 빼고 다 해결했습니다.

변경 사항:

$choices = call_user_func_array( 'array_merge', $choices ); 

대상:

$choices = call_user_func_array( 'array_merge', array_values($choices) );

이것이 나를 위해 고쳤습니다.

Bluehost WordPress 사이트에서 이러한 문제를 발견했을 때 다음이 효과적이었습니다.

  1. PHP 다운그레이드8.0로.7.4사용중MultiPHP Manager
  2. 워드프레스 업그레이드 위치5.3로.5.9경유로wp-admin
  3. PHP 업그레이드 위치7.4로.8.1사용중MultiPHP Manager

php 8.x로 업그레이드한 후에도 같은 문제가 있었습니다.

고정 대상:

sudo composer self-update

권장사항: Linux에 최신 버전의 Composer를 설치하고 이를 글로벌하게 정의하여 프로젝트 디렉토리에서 실행하면 문제가 해결됩니다.

작곡가 1.10.1 ----> to ------> 작곡가 버전 2.3.4

힌트: 같은 경우 composer.lock과 vendor 폴더를 취소하고 다시 실행합니다.

언급URL : https://stackoverflow.com/questions/69424097/uncaught-argumentcounterror-array-merge-does-not-accept-unknown-named-paramet

반응형