[英]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.