Câu trả lời:
system
Dữ liệu bảng Drupal 7 hiện được lưu trữ trong config
bảng trong Drupal 8 so với core.extension
tham số.
Giải pháp 1: Cập nhật cấu hình
Bạn có thể chạy mã sau bằng cách sử dụng drush eval
hoặc có thể đang sử dụng điều khoản của mô-đun 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();
Bạn có thể làm tất cả điều này trong một lót nhanh chóng với 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();"
Giải pháp 2: Chỉnh sửa bảng cấu hình nếu bạn không thể thực thi PHP
Nếu trang web bị hỏng do mô-đun có vấn đề và thậm chí bạn không thể chạy mã PHP, thì có thể bạn có thể chỉnh sửa config
bảng trực tiếp.
Trong hàng trong config
bảng nơi name = "core.extension"
và chỉnh sửa cột BLOB data
. Đây data
là một mảng PHP được tuần tự hóa trong đó bạn phải loại bỏ mô-đun mà bạn muốn loại bỏ khỏi module
khóa cấu hình.
Giải pháp 3: Giải pháp nhanh và bẩn
cache_config
Tuy nhiên, giải pháp này có thể dẫn đến các thông báo nói rằng mô-đun không tồn tại trong hệ thống tệp có nghĩa là có gì đó không đúng. Nhưng ít nhất mô-đun bị hỏng bị vô hiệu hóa và bạn có thể truy cập trang web của mình trong hầu hết các trường hợp.
Xóa bộ nhớ cache
Đôi khi bạn có thể phải xóa bộ nhớ cache sau khi làm theo các bước trên. Đọc tài liệu tiện dụng này về cách xóa bộ nhớ cache .
drush eval
. Một ví dụ một lớp lót là: 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();
Lưu ý ký hiệu đô la đã thoát để dòng lệnh không hiểu sai $module
là biến Bash.
config
bảng trong đó name = 'core.extension'
và xóa mô-đun khỏi blob dữ liệu là một mảng được tuần tự hóa.(...s:6:"module";a:HERE;{...)
cache_config
bảng từ phpmyadmin hoặc sử dụng dòng lệnh.i:0;s:8:"name of the module";
s:8:"name of the module";i:0;
. Điều @valli có nghĩa là mảng mô tả số lượng mô-đun nên được giảm theo số lượng theo số lượng mô-đun bị loại bỏ. Sự khởi đầu của blob trong thiết lập của tôi a:4:{s:6:"module";a:59:{
là một mảng gồm 59 mô-đun. Nếu bạn xóa hai thay đổi giá trị mảng đó thành 57.
Cân nhắc sử dụng Drush. Drupal 8 vẫn đang xác định "vô hiệu hóa các mô-đun" là gì. Có một cuộc thảo luận đang diễn ra nếu cần phải có tùy chọn đó hoặc nó nên được gỡ bỏ.
Nếu bạn cần cập nhật mọi thứ liên quan đến cấu hình Drupal, trong trường hợp này core.extension
, hãy sử dụng Drush:
[Drush 8.x trong ví dụ này]
drush cedit core.extension
Có một mô-đun cho điều đó. Mô-đun này đã được đăng vào tháng 8 năm 2013 trên drupal.org . Trong trường hợp ai đó cần.
Như đã nêu trên trang của mô-đun này,
Drupal 8 đã loại bỏ khả năng vô hiệu hóa các mô-đun vì nhiều lý do. Xem # 1199946: Các mô-đun bị vô hiệu hóa bị hỏng sau khi sửa chữa, do đó, chức năng "vô hiệu hóa" cần phải được loại bỏ và nhiều vấn đề khác trong hàng đợi của các mô-đun lõi và đóng góp khác nhau.
Mô-đun này mang lại khả năng (tạm thời) vô hiệu hóa các mô-đun khỏi UI hoặc với Drush. Lưu ý rằng không có gì đảm bảo cho nội dung, cấu hình hoặc thậm chí trang web của bạn sau khi bạn tắt mô-đun.
Đây là cách, tôi đã xóa thủ công một mô-đun có tên "better_messages" khỏi ví dụ Drupal 8 của mình. Ngay sau khi tôi cài đặt mô-đun "better_messages", trang web đã bị sập. Vì vậy, không có cách nào để gỡ cài đặt mô-đun từ giao diện người dùng. Tôi chưa cài đặt Drush. Tôi đã thực hiện nhiều cài đặt được đưa ra trong các diễn đàn, nhưng đây là cách cuối cùng nó hoạt động với tôi.
1 Đổi tên mô-đun thành old_better_messages trong thư mục mô-đun.
Thông qua url, đã chạy http: // IP: port / Foldername / construcild.php . Điều này đảm bảo rằng trang web đã hoạt động trở lại, nhưng chỉ ở chế độ chỉ đọc. Tôi không thể thực hiện các hoạt động quản trị hoặc chỉnh sửa bài viết.
Được sử dụng lệnh sau để xóa mục từ cơ sở dữ liệu
XÓA TỪ key_value WHERE bộ sưu tập = 'system.schema' AND name = 'better_messages';
Trong trường hợp của tôi, không có mục trong cơ sở dữ liệu. Tôi nghĩ rằng nó có thể đã bị xóa vì các pha nguy hiểm khác nhau mà tôi đã làm trước đó.
Điều này đã giải quyết vấn đề. Điều này dựa trên sự giải thích của tôi về https://www.drupal.org/node/2487215
Câu trả lời của Jigarius ở trên, loại công việc ...
Tôi đã phải: // Đọc cấu hình.
$module_data = \Drupal::config('core.extension')->get()['module'];
Mà nên làm điều tương tự. Không chắc tại sao nó không hoạt động như Jigarius đã viết nó ...