You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 7自定义模块遇require_once致命错误,请求技术支持

解决Drupal 7中require_once加载失败的致命错误

嘿,我一眼就看出问题出在哪了——你提供的audit_menu()函数里,'file'参数的文件名被截断成了'audi...',Drupal找不到对应的文件,所以才抛出了require_once(): Failed opening required的致命错误。结合你说的表单定义文件是audit.pages.inc,咱们一步步来修复:

第一步:补全file参数并验证路径

你的菜单回调需要正确指向包含audit_form函数的audit.pages.inc文件,修正后的代码应该是这样的:

function audit_menu() {
  $items = array();
  $items['audit'] = array(
    'title' => 'Audit',
    'type' => MENU_CALLBACK,
    'access arguments' => array('administer audit'),
    'page callback' => 'audit_form',
    'page arguments' => array('audit_form'),
    // 补全完整的文件名,指向你的表单定义文件
    'file' => 'audit.pages.inc',
    // 如果audit子模块在audit_pdf的子目录下(比如audit_pdf/audit/),需要加上file path参数
    // 'file path' => drupal_get_path('module', 'audit_pdf') . '/audit',
  );
  return $items;
}

这里要注意两个关键点:

  • 确保'file'的值是完整的'audit.pages.inc',不能有截断。
  • 如果你的audit子模块是放在audit_pdf模块目录的子文件夹里(比如sites/all/modules/audit_pdf/audit/),必须取消注释'file path'这一行,告诉Drupal去哪里找这个inc文件。drupal_get_path('module', 'audit_pdf')会自动获取主模块的绝对路径,拼接子目录后就能准确定位文件。

第二步:验证文件和权限

  • 确认audit_form函数确实存在于audit.pages.inc文件中,没有拼写错误。
  • 检查audit.pages.inc的文件权限,确保Drupal的web服务器用户(比如www-data)有读取这个文件的权限,避免因权限不足导致加载失败。

第三步:清除Drupal缓存

这一步绝对不能忘!Drupal会缓存菜单路由信息,哪怕你修正了代码,不清除缓存的话,旧的错误配置还会生效。你可以:

  • 登录Drupal后台,进入配置 > 性能页面,点击“清除所有缓存”按钮。
  • 如果安装了Drush工具,直接在命令行运行:drush cc menu(只清除菜单缓存,速度更快)。

做完这些,你的表单应该就能正常加载了,以后写Drupal菜单回调的时候,一定要注意file和file path参数的准确性,这是新手很容易踩的坑~

内容的提问来源于stack exchange,提问作者Valentin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:08:37