2010-08-02 24 views
3

在爲我的網站使用Drupal幾個月後,我發現模塊列表中的模塊卸載選項卡。我應該使用模塊卸載菜單嗎?

我一直通過從文件系統中刪除文件夾(禁用它們之後)來卸載我的模塊。我想知道這是否是刪除它們的錯誤方法。

謝謝

回答

7

當您卸載模塊,而並非只是禁止和刪除,你讓模塊清理後本身,包括:

  • 刪除的表,那麼創建它使用
  • 刪除系統變量。

因此,卸載是一個很好的清潔,爲您的數據庫的健康。事情不會這麼做,但爲什麼要將未使用的表保存在數據庫中?

注:
它是由模塊生成器創建做清理所需的代碼,所以不是所有的模塊做到這一點非常好。

1

卸載選項卡將刪除與模塊相關的數據庫中的任何內容。該操作要求該模塊仍然存在於您的模塊目錄中。

簡單地刪除這些文件並不是錯誤的,但它會在數據庫中留下不需要的東西。卸載選項卡不會爲你刪除模塊文件,你需要自己去做,就像你一直在做的那樣。

0

您可以檢查this link - 模塊可能有一些額外的卸載說明對於他們,但是看起來他們大部分沒有 - 這就是爲什麼你沒有任何問題:)

有時需要
2

卸載,因爲如果一個模塊被禁用,hook_install()將不會觸發。因此,如果例如某個模塊有一些損壞的數據,禁用並重新啓用將不會刪除該數據。

你可能會在你的方法確定。然而,有一件事需要做的是做以下事情。

  1. 禁用
  2. 刪除文件夾
  3. 在以後的日子放模塊回來(不是同一版本)
  4. 卸載。

原因是hook_install()和hook_uninstall()應該是彼此的鏡像。更新掛鉤用於保持模塊架構和設置與hook_install()中提供的最新內容一致,如果您要使用更新的模塊進行卸載(不更新),它將試圖卸載不同的設置預期。風險很小,有些事情會發生嚴重錯誤,但值得注意。

3

我一直通過從文件系統中刪除文件夾(禁用它們之後)來卸載我的模塊。我想知道這是否是刪除它們的錯誤方法。

從模塊中使用的文件不是模塊在Drupal站點上留下的唯一東西;在卸載模塊時,還有數據庫表,Drupal變量,仍然需要刪除的緩存值。模塊還可以將行添加到從不同模塊創建的數據庫表中。
刪除模塊文件時,不會刪除對錶系統中包含的模塊的任何引用。這意味着,如果在刪除它之後複製同一模塊,並且刪除了它的表,則該模塊不會重新創建所需的數據庫表。

我會明確地說這是卸載模塊的錯誤方法。

1

Drush使得模塊卸載過程更愉快,喜歡的東西:

drush pm-disable [module] // or its shorthand drush dis [module] 
drush pm-uninstall [module] 

事實上,Drush使剛纔的一切更愉快(下載/安裝模塊,處理安裝配置文件,創建數據庫備份,和我個人最喜歡的,更新你的整個代碼庫)。如果你還沒有使用它,我強烈建議嘗試一下。