【问题标题】:Drupal - moving module folderDrupal - 移动模块文件夹
【发布时间】:2011-02-08 22:18:00
【问题描述】:

移动我的模块是否安全

  • 来自 sites/all/modules/
  • sites/all/modules/contribsites/all/modules/custom

在生产现场?

也就是说,Drupal 是否会自动检测到模块仍然存在,但在新路径中?

【问题讨论】:

    标签: drupal module


    【解决方案1】:

    如果您移动一个模块,Drupal 会发现旧模块已损坏,而新模块存在。它不会假设这两者是同一个东西 - 只是移动了。

    【讨论】:

    • 如果您禁用模块,移动它,然后在新位置重新启用它应该没问题。它可能会保留其设置。如果你只是简单地将它从 Drupal 下拉出来,它就不会这样了。
    • 第 1 步:移动模块。第二步:清除缓存。如果此时模块仍然损坏,则存在错误。
    • 另外,在 Drupal 7 中,您可能会在移动模块后遇到注册表问题。如果遇到此问题,请按照以下 URL 中的说明操作:drupal.org/project/registry_rebuild
    【解决方案2】:

    Drupal 将文件位置存储在系统表中,当你清除模块缓存时,信息将被重建,所以如果你移动这些东西并在之后清除缓存,你应该没问题。

    【讨论】:

      【解决方案3】:

      最好为模块提供 /contrib 和 /custom 子文件夹。对于 D7,特别是如果您使用实体,您应该禁用模块,移动它们然后重新启用。它有效。

      替代方案,将模块移动到子文件夹并清除缓存,有时不起作用并可能生成 WSOD。

      【讨论】:

        【解决方案4】:

        Drupal 到 D6 的版本将模块位置保留在系统表中,但从 D7 开始,有多个记录路径的位置(例如 registryregistry_file 表),因此仅移动文件夹并清除缓存不会这样做,很可能会导致严重的问题。

        您可以尝试的一系列步骤:

        1. 备份您的数据库
        2. 将您的代码签入到版本控制中
        3. 运行以下查询:

          UPDATE system
          SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib');
          
          UPDATE registry
          SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib');
          
          UPDATE registry_file
          SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib')
          
        4. 移动文件夹

        5. 运行:drush cc all

        【讨论】:

        • 当 (5) 给出错误(上下文给出错误)时,尝试截断所有缓存% 表
        【解决方案5】:

        如果之后清除缓存(drush cc all),您可以安全地移动大部分模块。

        然而,一些模块,尤其是ctools,将文件路径信息存储在系统表或缓存之外的地方。您可能必须将这些模块留在原来的位置,但您仍然可以移动其他所有内容。

        【讨论】:

          【解决方案6】:

          irakli 的回答对我来说效果很好,但我想为查询增加一些额外的复杂性,以防其他人发现它们有用。

          第 1 步 – 如果您有幸让所有“自定义”模块共享一个命名空间,请更新它们:

          UPDATE system SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/custom') WHERE name LIKE 'custom_namespace_%';
          UPDATE registry SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/custom') WHERE name LIKE 'custom_namespace_%';
          UPDATE registry_file SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/custom') WHERE filename LIKE '%custom_namespace_%';
          

          第 2 步 - 更新所有“开发”模块:

          UPDATE system SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/dev') WHERE name LIKE 'devel%';
          UPDATE registry SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/dev') WHERE name LIKE 'devel%';
          UPDATE registry_file SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/dev') WHERE filename LIKE '%devel%';
          

          第 3 步 - 更新所有“contrib”模块:

          UPDATE system SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib');
          UPDATE registry SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib');
          UPDATE registry_file SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib')
          

          然后将所有模块放入适当的sites/all/modules/contrib|custom|dev 文件夹,清除缓存,然后就可以开始了。

          【讨论】:

            【解决方案7】:

            如果您在 D7 上,那么这个 drupal 文档页面是继续移动模块的最佳方式 - How to move modules and themes

            【讨论】:

              【解决方案8】:

              使用http://drupal.org/project/registry_rebuild "Registry Rebuild 还将重建系统表以将模块放置在正确的位置,以便您进行引导。"

              • 备份数据库
              • 上传了“模块”
              • 移动了所有模块
              • 运行脚本sites/all/modules/registry_rebuild/registry_rebuild.php
              • 重新加载网站
              • 如果出现错误,请清除浏览器缓存,然后一切正常

              【讨论】:

                【解决方案9】:

                其实你只需要对系统表进行更新,然后进行如下操作:

                drush rr 
                

                也许……

                drush cc all
                
                drush rr
                

                【讨论】:

                  【解决方案10】:

                  更改模块文件夹后不要忘记使用此模块:

                  https://drupal.org/project/registry_rebuild

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2019-02-22
                    • 2013-07-14
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2021-01-23
                    相关资源
                    最近更新 更多