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

如何不安装Devel模块为Drupal全局安装Kint(解决Lando适配问题)

问题原因

原生本地部署的Drupal直接运行在宿主机系统上,能正常读取宿主机用户目录下的Composer全局文件;但Lando是基于容器的隔离运行环境,默认不会挂载宿主机的/home/username/.composer目录到应用容器内部,你写的include_once路径在容器内不存在,自然无法加载Kint。

无Devel模块全局Kint配置步骤(适配Lando环境)
  • 第一步:进入Lando项目的应用容器
    在项目根目录执行命令进入运行PHP的appserver容器:
    lando ssh
    
  • 第二步:容器内安装全局Kint
    容器内执行以下命令,配置全局Composer路径(避免www-data用户权限问题)并安装Kint:
    composer config -g vendor-dir /var/www/.composer/vendor
    composer config -g bin-dir /var/www/.composer/vendor/bin
    composer global require kint-php/kint
    
    安装完成后执行ls /var/www/.composer/vendor/autoload.php,如果返回文件路径说明安装正常。
  • 第三步:持久化全局依赖配置
    容器默认重建后会清空内部文件,需要在项目根目录的.lando.yml中添加挂载配置,把全局Composer目录持久化存储:
    # 文件顶层添加volume声明
    volumes:
      lando_composer_global:
    
    services:
      appserver:
        # 在appserver服务下添加挂载规则
        volumes:
          - lando_composer_global:/var/www/.composer
    
    保存配置后执行lando rebuild -y重建环境,重建完成后重新执行第二步的Kint安装命令,后续容器重启/重建都不会丢失全局依赖。

    如果你需要所有本地Lando项目都能共用这套全局Kint,把上述volume配置写到Lando全局配置文件~/.lando/config.yml中即可,无需每个项目重复配置。

  • 第四步:配置Drupal自动加载
    打开站点的settings.local.php,替换原来的宿主机路径引入代码为容器内路径,建议加文件存在判断避免报错:
    // 加载容器内全局Composer自动加载
    if (file_exists('/var/www/.composer/vendor/autoload.php')) {
      include_once('/var/www/.composer/vendor/autoload.php');
    }
    
    // 可选Kint基础配置,避免大变量渲染导致站点卡顿
    if (class_exists('Kint')) {
      // 限制递归深度,默认值过深容易内存溢出
      \Kint::$depth_limit = 4;
      // 非管理员用户访问时关闭Kint输出,避免调试信息泄露
      if (!\Drupal::currentUser()->hasPermission('administer site configuration')) {
        \Kint::$enabled_mode = false;
      }
    }
    
验证方式

执行lando drush cr清除Drupal缓存,在模块预处理函数、模板文件中直接调用Kint函数即可输出调试内容,常用调用方式:

  • 直接输出变量:kint($变量名);
  • 带标签输出:kint($变量名, '自定义调试标签');
  • 不中断程序执行的静默dump:$debug = @Kint::dump($变量名);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:39:09