Làm thế nào tôi có thể di chuyển một mô-đun sang thư mục khác một cách an toàn?


7

Tôi đã tạo một mô-đun thông qua Drupal Console, thật không may, nó không được đặt trong một thư mục của riêng nó, thay vào đó /modules/custom. Trước khi tôi nhận thấy nó đã đi đâu, tôi đã kích hoạt mô-đun.

Trong Drupal 6/7, điều này rất dễ khắc phục - tôi có thể chỉ cần đặt các tệp vào đúng đường dẫn, xóa bộ nhớ cache (có thể xây dựng lại sổ đăng ký, đó không phải là một khoa học chính xác), và tất cả đều ổn.

Điều tương tự cũng không đúng với Drupal 8; Tôi đã chuyển các tệp vào thư mục con, bộ nhớ cache được xây dựng lại và tất cả các yêu cầu cho tôi biết rằng Drupal không bao gồm tệp được yêu cầu. Tệp cụ thể là một lớp khối và đường dẫn mà Drupal đang cố gắng tìm nó là nơi nó từng ở, chứ không phải nơi tôi đã chuyển nó đến.

Một chút của việc phản đối mã là trong Symfony ApcClassLoader, vì vậy tôi đoán rằng tôi cần phải xóa một cái gì đó hơi cao hơn đầu của Drupal để cập nhật tham chiếu đường dẫn này.

Làm thế nào tôi có thể làm điều đó?

Gỡ cài đặt và cài đặt lại mô-đun hoạt động, nhưng một khi có dữ liệu quan trọng được lưu trữ sẽ không phải là một tùy chọn.

Tôi đã sai, gỡ cài đặt và cài đặt lại không phải là một lựa chọn khả thi. Sau khi gỡ cài đặt và cài đặt lại, Drupal không còn có thể nhận các khối tùy chỉnh mà mô-đun xác định. Tôi đoán rằng tài liệu tham khảo được lưu trữ ở một nơi nào đó không bị xóa khi gỡ cài đặt mô-đun. Chỉ cần tìm ra nơi đó và làm thế nào để xóa nó ...


Vì vậy, nếu bạn tạo First.module và second.module với Drupal Console, bạn có tìm thấy cả hai tệp đó trong / module / custom không? Tôi sẽ không bao giờ tạo ra một mô-đun với điều đó, sau đó.
kiamlaluno

Tôi đã có một phiên bản cũ @kiamlaluno, đã được nâng cấp và vấn đề không còn nữa. Vấn đề trong câu hỏi chắc chắn nhất là, nó thực sự trở nên tồi tệ hơn. Tôi vừa mới thêm một mô-đun hoàn toàn mới, với một khối hoàn toàn mới và Drupal hiện sẽ không chọn khối đó cho trang quản trị. Một cái gì đó đã thực sự vướng vào cấu hình của nó nhưng tôi không biết tìm ở đâu: /
Clive

ApcClassLoader::findFile()nhận được đường dẫn sai từ apc_fetch(), hoặc trình nạp lớp được trang trí trả lại đường dẫn sai?
gapple

Câu trả lời:


11

Chỉ cần khởi động lại apache. Bộ đệm APC sẽ được xây dựng lại sau đó.

Bạn cũng có thể thử nhấn buildild.php hoặc chạy drush cr. Tất cả đều cố gắng xóa bộ nhớ cache APC một cách rõ ràng.


Vâng, tôi đã làm những điều tương tự (nginx + fpm nhưng đã khởi động lại cả hai lần), cộng với việc chạy trực tiếp apc_flush_cache và thậm chí chuyển đổi giữa php5 và 7 nên các cửa hàng hoàn toàn khác nhau, vẫn thấy vấn đề với thiết lập của tôi, cụ thể là logic cho biết một trong những phương pháp đó sẽ khắc phục nó. sẽ có cái nhìn cận cảnh hơn vào ngày mai
Clive

Thời gian ban đêm dường như đã sửa nó, vì vậy tôi sẽ đặt một cái ghim vào lúc này ...
Clive

xây dựng lại.php (mở trong trình duyệt) đã giúp, khởi động lại apache và xóa bộ nhớ cache không giúp được gì.
drupalfan

Tôi đã xóa bộ nhớ cache, chạy xây dựng lại.php, khởi động lại apache. Vẫn không làm việc nhận được cùng một lỗi. Khối giới thiệu đường dẫn mô-đun cũ.
ARUN

0

Một giải pháp khác được đặt trong cài đặt của bạn.php:

 /**
 * Class Loader.
 *
 * If the APC extension is detected, the Symfony APC class loader is used for
 * performance reasons. Detection can be prevented by setting
 * class_loader_auto_detect to false, as in the example below.
 */
$settings['class_loader_auto_detect'] = FALSE;

-1

Bạn nên xóa bộ nhớ cache drupal. Đó là cách thực hiện với drush:

drush cr

Chúng ta đang nói ở đây về Drupal 8, phần trên hoạt động cho drupal 7.
Marko Blazekovic

Cảm ơn Marko, đã cập nhật câu trả lời của tôi cho giải pháp drupal 8.
Somerussian
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.