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

Drupal 8缓存无法清除及Hello World模块路由失效求助

嗨,我来帮你搞定这两个Drupal的问题!

问题1:无法清除Drupal 8中的缓存

给你列几个靠谱的清缓存方法,总有一款能解决你的困扰:

  • 用Drush命令快速清缓存:这是开发者最常用的方式,在项目根目录运行 drush cr(全称是 drush cache:rebuild);如果Drush没全局安装,就用 ./vendor/bin/drush cr 来执行。
  • 通过后台UI清缓存:登录Drupal后台后,点击顶部工具栏的「配置」→「开发」→「性能」,然后点击「清除所有缓存」按钮;要是后台页面加载有问题,直接访问 /admin/config/development/performance 跳转过去操作。
  • 手动删除缓存文件:找到 drupal/web/sites/default/files/php 和 drupal/web/sites/default/files/config 目录,删掉里面的缓存文件(注意别误删settings.php这类核心配置文件);另外可以删掉 vendor/composer/autoload_classmap.php,再运行 composer dump-autoload 重新生成自动加载映射。
  • 检查文件权限:Drupal需要读写缓存目录的权限,确保 sites/default/files 目录的权限设置正确(一般目录设为755,文件设为644,具体根据服务器环境调整)。
问题2:Hello World自定义模块添加路由后运行异常

你已经配置了路由文件和控制器,大概率是细节没踩对,我给你梳理几个排查点:

  • 核对YAML缩进格式:YAML对缩进要求超级严格,你的 hello_world.routing.yml 里,每个层级必须用2个空格(绝对不能用Tab),比如 defaults 下面的 _controller 和 _title 要缩进2格,requirements 同理,你贴的代码看起来格式没问题,但最好再仔细核对一遍。
  • 检查控制器的命名空间和类名:你的控制器文件路径必须是 drupal/web/modules/custom/hello_world/src/Controller/HelloWorldController.php,文件开头的命名空间必须是 namespace Drupal\hello_world\Controller;,不能少了 Controller 这部分;类名要和文件名完全一致,也就是 class HelloWorldController { ... }。
  • 确保控制器方法正确返回响应:helloWorld 方法必须返回Symfony的响应对象,示例代码如下:
    use Symfony\Component\HttpFoundation\Response;
    
    class HelloWorldController {
      public function helloWorld() {
        return new Response('Hello World!');
      }
    }
    
    要是没引入Response类或者没返回响应,Drupal肯定会报错。
  • 务必重新清缓存:添加新路由后必须清缓存,不然Drupal不会识别新的路由规则,用上面说的任意一种清缓存方式操作一遍。
  • 确认模块状态:去后台「扩展」页面看看你的hello_world模块是不是真的处于启用状态,有时候可能不小心被禁用了都没发现。
  • 查看详细报错信息:如果有白屏或者模糊的错误提示,开启Drupal的调试模式会很有用——在 sites/default/settings.php 里把 $config['system.logging']['error_level'] 设置为 'verbose',这样就能看到具体的错误原因了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:07:26