답변:
Drupal 7 system
테이블 데이터가 이제 매개 변수 config
에 대해 Drupal 8 의 테이블에 저장됩니다 core.extension
.
해결 방법 1 : 구성 업데이트
drush eval
Devel 모듈의를 사용 하거나 사용중인 다음 코드를 실행할 수 있습니다 Execute PHP Code
.
// Read the configuration.
$module_data = \Drupal::config('core.extension')->get('module');
// Unset the modules you do not need.
unset($module_data['MODULE_NAME']);
// Write the configuration.
\Drupal::configFactory()->getEditable('core.extension')->set('module', $module_data)->save();
을 사용하여 빠른 한 줄짜리 로이 모든 것을 할 수 있습니다 drush
.
drush eval "\$module_data = \Drupal::config('core.extension')->get('module'); unset(\$module_data['MODULE_NAME']); \Drupal::configFactory()->getEditable('core.extension')->set('module', \$module_data)->save();"
해결 방법 2 : PHP를 실행할 수없는 경우 구성 테이블 편집
문제가있는 모듈로 인해 사이트가 손상되어 PHP 코드를 실행할 수없는 경우 config
테이블을 직접 편집 할 수 있습니다.
BLOB 열이 있는 config
테이블 의 행에서 name = "core.extension"
편집하십시오 data
. 이것은 구성 키 data
에서 제거하려는 모듈을 제거해야하는 직렬화 된 PHP 배열 module
입니다.
해결책 3 : 빠르고 더러운 해결책
cache_config
그러나이 솔루션은 파일 시스템에 모듈이 존재하지 않는다는 메시지가 표시 될 수 있습니다. 그러나 적어도 고장난 모듈은 비활성화되며 대부분의 경우 사이트에 액세스 할 수 있습니다.
캐시 지우기
때로는 위 단계를 수행 한 후 캐시를 지워야 할 수도 있습니다. 캐시를 지우는 방법에 대한 이 편리한 설명서를 읽으십시오 .
drush eval
. 한 drush eval "\$module_data = \Drupal::config('core.extension')->get('module'); unset(\$module_data['example_module']); \Drupal::configFactory()->getEditable('core.extension')->set('module', \$module_data)->save();
줄짜리 예제는 다음과 같습니다 . 이스케이프 처리 된 달러 기호를 참고하여 명령 행이 $module
Bash 변수로 잘못 해석되지 않도록 하십시오.
config
테이블을 수동으로 편집하십시오 name = 'core.extension'
.(...s:6:"module";a:HERE;{...)
cache_config
phpmyadmin 또는 명령 줄을 사용하여 테이블을 자릅니다 .i:0;s:8:"name of the module";
s:8:"name of the module";i:0;
. @valli의 의미는 모듈 수를 설명하는 배열은 제거 된 모듈 수에 따라 숫자를 줄여야한다는 것입니다. 내 설정에서 blob의 시작은 a:4:{s:6:"module";a:59:{
59 모듈의 배열입니다. 두 배열을 삭제하면 해당 배열 값을 57로 변경합니다.
Drush 사용을 고려하십시오. Drupal 8은 여전히 "비활성화 모듈"이 무엇인지 정의하고 있습니다. 가 진행중인 논의 가 해당 옵션해야하거나 제거해야합니다.
이를위한 모듈이 있습니다. 이 모듈은 2013 년 8 월 drupal.org에 게시되었습니다 . 누군가가 필요한 경우
이 모듈의 페이지에 명시된 바와 같이
Drupal 8은 여러 가지 이유로 모듈을 비활성화하는 기능을 제거했습니다. # 1199946 참조 : 비활성화 된 모듈은 복구 할 수없는 상태이므로 "비활성화"기능을 제거 하고 다양한 코어 및 컨트 리뷰 션 된 모듈 의 대기열에있는 다른 많은 문제를 해결 해야 합니다.
이 모듈은 UI에서 또는 Drush로 모듈을 (일시적으로) 비활성화하는 기능을 다시 제공합니다. 모듈을 비활성화 한 후에는 콘텐츠, 구성 또는 사이트에 대한 보증이 없습니다.
이 방법으로 Drupal 8 인스턴스에서 "better_messages"라는 모듈을 수동으로 제거했습니다. "better_messages"모듈을 설치하자마자 사이트가 다운되었습니다. 따라서 사용자 인터페이스에서 모듈을 제거 할 방법이 없었습니다. Drush를 설치하지 않았습니다. 포럼에서 많은 설정을 수행했지만 이것이 마침내 효과가 있습니다.
1 모듈을 모듈 폴더의 old_better_messages로 이름을 변경했습니다.
URL을 통해 http : // IP : port / foldername / rebuild.php를 실행하십시오 . 이를 통해 사이트가 돌아 왔지만 읽기 전용 모드로 돌아갔습니다. 관리자 활동을하거나 기사를 편집 할 수 없습니다.
다음 명령을 사용하여 데이터베이스에서 항목을 삭제했습니다.
key_value에서 삭제 collection = 'system.schema'AND name = 'better_messages';
제 경우에는 데이터베이스에 항목이 없습니다. 나는 이전에했던 다양한 스턴트 때문에 삭제되었을 수 있다고 생각합니다.
문제가 해결되었습니다. 이것은 https://www.drupal.org/node/2487215 에 대한 나의 해석을 기반으로합니다.
위의지가 리우스의 대답은 일종의 일이었습니다 ...
// 구성을 읽습니다.
$module_data = \Drupal::config('core.extension')->get()['module'];
어떤 해야 같은 일을. Jigarius가 쓴 것처럼 왜 작동하지 않는지 확실하지 않습니다 ...