Layout do Mautic (root, docroot, knobs)

O mpm precisa saber, dentro do container, onde ficam os plugins, o binário console, o cache e qual usuário web usar. Esses parâmetros são os knobs.

Knobs e defaults

Knob Default Override
mautic_root /var/www/html --mautic-root
plugins_dir <root>/plugins (ou auto docroot) --plugins-dir
console bin/console (M4+), app/console (M2/3) --console
php_bin php --php-bin
web_user www-data --web-user

Os defaults são version-aware: o mpm escolhe pela versão Mautic que você passou no instance add.

O caso docroot (Mautic 5/6 composer)

Instalações Mautic 5/6 feitas pelo "recommended-project" (composer) usam um layout diferente:

  • O project root é /var/www/html e tem o bin/console.
  • O application dir é /var/www/html/docroot — é lá que mora o app/AppKernel.php.
  • O Mautic carrega plugins de getApplicationDir()/plugins, ou seja /var/www/html/docroot/plugins, não /var/www/html/plugins.

Se o mpm deployasse no <root>/plugins padrão, os arquivos cairiam num diretório que o Mautic nunca lê: o install reporta sucesso, mas o plugin não registra (não aparece na tabela plugins nem em debug:container).

Detecção automática

Desde a v0.2.1 o mpm detecta esse layout sozinho. Antes do deploy ele sonda o container:

docker exec <container> test -f <root>/docroot/app/AppKernel.php

Se o arquivo existe, o plugins_dir passa a ser <root>/docroot/plugins automaticamente. Você não precisa configurar nada.

O cache, nesse layout, continua em <root>/var/cache/prod (não sob docroot) — o mpm já trata isso.

Override manual

Se a detecção não cobrir o seu caso (layout customizado), force o diretório:

mpm --plugins-dir /caminho/real/plugins install queryreport -i prod

Atenção: o override por flag vale só para aquela invocação — não persiste entre comandos. Para layouts não-padrão recorrentes, use a flag sempre, ou abra um chamado pra a detecção cobrir o caso.

Como confirmar onde o plugin caiu

# Onde o Mautic realmente lê (procure os bundles core aqui):
mpm console -i prod -- config:dump-reference 2>/dev/null  # opcional
docker exec <container> ls /var/www/html/docroot/plugins

# O plugin registrou?
mpm console -i prod -- doctrine:query:sql \
  "SELECT bundle, is_missing FROM plugins WHERE bundle LIKE '%Query%'"
By Borlot.com.br on 26/06/2026