繁体   English   中英

Drupal hook_menu未重新评估

[英]Drupal hook_menu not re-evaluated

我最近将更新部署到了暂存站点, hook_menu()我完全无法获取hook_menu()进行重新评估。 该挂钩在更新之前已经存在,并且正在提供一项。 更新后,它应该提供2个项目,但是无论如何我都无法启动。

新代码可以在我的Ubuntu / LAMP本地开发环境中正常运行,但是暂存平台是IIS7 / PHP FastCGI。

我试图通过sys> dev> performance,通过管理菜单提供的各种链接,通过index.php cache_clear_all()drupal_flush_all_caches()清除缓存。

我尝试停止/启动/重新启动IIS。

据我从phpinfo()所知,似乎没有任何运行中的操作码缓存,没有“ cache”或“ apc”的相关提法。

我已经在mymodule_menu()代码中添加了die()命令,并且似乎该钩子根本没有触发。 尽管menu_router表保留了先前存在的单个菜单项,但它没有收到任何新条目。

我知道该模块正在运行,因为我可以将die()放入先前存在的菜单项的页面回调中,并且杀死PHP。

我也知道,新的钩子已经被评估为与提供的相同代码更新,还提供了一个成功触发的mymodule_page_alter()钩子。

开始达到我的束缚的尽头! 我还能尝试什么?

编辑:

我所做的另一件事是证明mymodule_hook()的命名正确。 我已经运行<?php print_r(mymodule_menu()); ?> <?php print_r(mymodule_menu()); ?>通过PHP过滤器,它按预期输出菜单项数组。

编辑:

我也试过<?php print_r(module_implements('menu')); ?> <?php print_r(module_implements('menu')); ?>通过PHP过滤器,我可以在数组中看到mymodule

编辑:

我的hook_menu实现:

/**
 * Implements hook_menu().
 */
function mymodule_menu() {
  $items = array();
  $items['google-search'] = array(
    'page callback' => 'mymodule_google_search_page',
    'access callback' => TRUE,
    'title' => 'Search Results'
  );
  $items['mymodule-header-footer'] = array(
    'page callback' => 'mymodule_header_footer',
    'access callback' => TRUE,
    'title' => 'Header and Footer'
  );
  return $items;
}

从上面的/google-search开始并继续工作。 /mymodule-header-footer是有问题的项目。

好的问题解决了。 在menu_rebuild()中,有一个事务回滚try / catch,而menu_rebuild()期间有一个错误,暴露了缺少备份和迁移模块的架构的问题。 这是由于生产工程师将备份和迁移模块部署到生产中,而不是将其提供给上游。 即使未在登台时创建架构,也将备份和迁移模块以某种方式标记为已启用。 仍然很神秘,但是卸载/重新安装模块使menu_rebuild()成功完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM