doctor

doctor reúne verificações de PHP, extensões, arquivos do projeto, acesso ao repositório e segurança básica em um único relatório.

DiagnósticoVersão 1.1.4Estável
lil-terminal

Visão geral

Comece com doctor quando a mesma instalação do lil-terminal se comporta de forma diferente em duas hospedagens. Depois restrinja a platform, extensions, files, repo ou security.

Primeiro encontre a camada com problema

doctor não corrige o servidor automaticamente. Ele separa limites da plataforma, extensões ausentes, problemas de arquivos, conectividade com o repositório e configuração de segurança para que o próximo passo seja baseado em fatos.

Sintaxe

lil-terminal
doctor [group] [-q|-j]

Referência

doctor

verificar tudo

doctor platform

mostrar verificações de PHP, SAPI, limites, sessão e OPcache

doctor extensions

mostrar verificações das extensões PHP

doctor files

verificar caminhos do projeto, permissões e armazenamento

doctor repo

verificar o repositório lil

doctor security

verificar HTTPS, autorização e cookies

-q

mostrar somente avisos e erros

-j

retornar JSON legível por máquina

Prévia interativa do sandbox

Execute os exemplos preparados diretamente na página. Os resultados são predefinidos e exibidos no navegador; nenhum comando do terminal é executado no servidor.

Verificar arquivos do projeto e mostrar só problemas

Instalar e gerenciar

Instale a versão compatível atual. Escolha Base para o conjunto completo de recursos ou Minimum para o pacote reduzido; use upgrade para atualizar um módulo já instalado.

Base e Minimum são dois pacotes da mesma versão atual do módulo.

Pacote Base

Instala o pacote completo com referência local e todos os modos publicados.

install doctor
Pacote Minimum

Instalar o pacote reduzido. A referência local é omitida; help <cmd> -i abre a referência atual do servidor.

install doctor -m
Versão pública exata

Instalar exatamente esta versão publicada.

install doctor -v 1.1.4
Verificar ou atualizar

upgrade verifica compatibilidade e substitui o bloco somente quando necessário.

upgrade doctor
Remover módulo

Remove o bloco da extensão sem afetar o núcleo ou outros módulos.

install doctor -u

Exemplos

Os exemplos podem ser copiados, mas o site não os executa. Revise caminhos, permissões e opções destrutivas.

Verificar arquivos do projeto e mostrar só problemas
doctor
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
PLATFORM          
+ php             8.4.24 cli
+ memory          -1
+ execution       0 s
+ upload          upload 2M, post 8M
+ session         /var/lib/php/sessions
! opcache         disabled or unavailable

EXTENSIONS        
+ session         loaded
+ json            loaded
+ tokenizer       loaded
+ filter          loaded
+ hash            loaded
+ pcre            loaded
! curl            optional
+ openssl         loaded
+ fileinfo        loaded
! mbstring        optional
! zip             optional
+ phar            loaded
! mysqli          optional
! imap            optional
+ exif            loaded
! imagick         optional
+ sodium          loaded
+ zlib            loaded
! bz2             optional

FILES             
+ lil             training-runtime/lil.php [w]
+ cwd             sandbox [w]
+ base            sandbox [w]
! extensions      training-runtime/sandbox_fixture/extensions.php [ro]
+ temp            /tmp [w]
+ disk            29.7 GB free of 31.5 GB
! asset-css       not installed
! asset-js        not installed

REPO              
+ endpoint        https://repo.lil.dog
! install-api     undefined
+ installer       latest v1.4.6

SECURITY          
! https           not detected
! authorization   disabled build
+ display-errors  0
+ url-include     
! expose-php      1
! cookie          HttpOnly off, Secure off
+ lil-mode        0644

OK                27
WARN              16
FAIL              0
Mostrar verificações de PHP, SAPI, limites, sessão e OPcache
doctor platform
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
+ php        8.4.24 cli
+ memory     -1
+ execution  0 s
+ upload     upload 2M, post 8M
+ session    /var/lib/php/sessions
! opcache    disabled or unavailable

OK           5
WARN         1
FAIL         0
Mostrar verificações das extensões PHP
doctor extensions
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
+ session    loaded
+ json       loaded
+ tokenizer  loaded
+ filter     loaded
+ hash       loaded
+ pcre       loaded
! curl       optional
+ openssl    loaded
+ fileinfo   loaded
! mbstring   optional
! zip        optional
+ phar       loaded
! mysqli     optional
! imap       optional
+ exif       loaded
! imagick    optional
+ sodium     loaded
+ zlib       loaded
! bz2        optional

OK           12
WARN         7
FAIL         0
Verificar caminhos do projeto, permissões e armazenamento
doctor files
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
+ lil         training-runtime/lil.php [w]
+ cwd         sandbox [w]
+ base        sandbox [w]
! extensions  training-runtime/sandbox_fixture/extensions.php [ro]
+ temp        /tmp [w]
+ disk        29.7 GB free of 31.5 GB
! asset-css   not installed
! asset-js    not installed

OK            5
WARN          3
FAIL          0
Verificar o repositório lil
doctor repo
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
+ endpoint     https://repo.lil.dog
! install-api  undefined
+ installer    latest v1.4.6

OK             2
WARN           1
FAIL           0
Verificar HTTPS, autorização e cookies
doctor security
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
! https           not detected
! authorization   disabled build
+ display-errors  0
+ url-include     
! expose-php      1
! cookie          HttpOnly off, Secure off
+ lil-mode        0644

OK                3
WARN              4
FAIL              0
Mostrar somente avisos e erros
doctor -q
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
PLATFORM         
! opcache        disabled or unavailable

EXTENSIONS       
! curl           optional
! mbstring       optional
! zip            optional
! mysqli         optional
! imap           optional
! imagick        optional
! bz2            optional

FILES            
! extensions     training-runtime/sandbox_fixture/extensions.php [ro]
! asset-css      not installed
! asset-js       not installed

REPO             
! install-api    undefined

SECURITY         
! https          not detected
! authorization  disabled build
! expose-php     1
! cookie         HttpOnly off, Secure off

OK               27
WARN             16
FAIL             0
Retornar JSON legível por máquina
doctor -j
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
{
    "summary": {
        "ok": 27,
        "warn": 16,
        "fail": 0
    },
    "checks": [
        {
            "group": "platform",
            "name": "php",
            "status": "ok",
            "detail": "8.4.24 cli"
        },
        {
            "group": "platform",
            "name": "memory",
            "status": "ok",
            "detail": "-1"
        },
        {
            "group": "platform",
            "name": "execution",
            "status": "ok",
            "detail": "0 s"
        },
        {
            "group": "platform",
            "name": "upload",
            "status": "ok",
            "detail": "upload 2M, post 8M"
        },
        {
            "group": "platform",
            "name": "session",
            "status": "ok",
            "detail": "/var/lib/php/sessions"
        },
        {
            "group": "platform",
            "name": "opcache",
            "status": "warn",
            "detail": "disabled or unavailable"
        },
        {
            "group": "extensions",
            "name": "session",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "json",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "tokenizer",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "filter",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "hash",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "pcre",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "curl",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "openssl",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "fileinfo",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "mbstring",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "zip",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "phar",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "mysqli",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "imap",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "exif",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "imagick",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "sodium",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "zlib",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "bz2",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "files",
            "name": "lil",
            "status": "ok",
            "detail": "training-runtime/lil.php [w]"
        },
        {
            "group": "files",
            "name": "cwd",
            "status": "ok",
            "detail": "sandbox [w]"
        },
        {
            "group": "files",
            "name": "base",
            "status": "ok",
            "detail": "sandbox [w]"
        },
        {
            "group": "files",
            "name": "extensions",
            "status": "warn",
            "detail": "training-runtime/sandbox_fixture/extensions.php [ro]"
        },
        {
            "group": "files",
            "name": "temp",
            "status": "ok",
            "detail": "/tmp [w]"
        },
        {
            "group": "files",
            "name": "disk",
            "status": "ok",
            "detail": "29.7 GB free of 31.5 GB"
        },
        {
            "group": "files",
            "name": "asset-css",
            "status": "warn",
            "detail": "not installed"
        },
        {
            "group": "files",
            "name": "asset-js",
            "status": "warn",
            "detail": "not installed"
        },
        {
            "group": "repo",
            "name": "endpoint",
            "status": "ok",
            "detail": "https://repo.lil.dog"
        },
        {
            "group": "repo",
            "name": "install-api",
            "status": "warn",
            "detail": "undefined"
        },
        {
            "group": "repo",
            "name": "installer",
            "status": "ok",
            "detail": "latest v1.4.6"
        },
        {
            "group": "security",
            "name": "https",
            "status": "warn",
            "detail": "not detected"
        },
        {
            "group": "security",
            "name": "authorization",
            "status": "warn",
            "detail": "disabled build"
        },
        {
            "group": "security",
            "name": "display-errors",
            "status": "ok",
            "detail": "0"
        },
        {
            "group": "security",
            "name": "url-include",
            "status": "ok",
            "detail": ""
        },
        {
            "group": "security",
            "name": "expose-php",
            "status": "warn",
            "detail": "1"
        },
        {
            "group": "security",
            "name": "cookie",
            "status": "warn",
            "detail": "HttpOnly off, Secure off"
        },
        {
            "group": "security",
            "name": "lil-mode",
            "status": "ok",
            "detail": "0644"
        }
    ]
}
Recusar um grupo de diagnóstico desconhecido
doctor platform -q
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
! opcache  disabled or unavailable

OK         5
WARN       1
FAIL       0
Retornar JSON legível por máquina
doctor extensions -j
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
{
    "summary": {
        "ok": 12,
        "warn": 7,
        "fail": 0
    },
    "checks": [
        {
            "group": "extensions",
            "name": "session",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "json",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "tokenizer",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "filter",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "hash",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "pcre",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "curl",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "openssl",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "fileinfo",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "mbstring",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "zip",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "phar",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "mysqli",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "imap",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "exif",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "imagick",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "sodium",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "zlib",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "bz2",
            "status": "warn",
            "detail": "optional"
        }
    ]
}
Mostrar somente avisos e erros
doctor security -q
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
! https          not detected
! authorization  disabled build
! expose-php     1
! cookie         HttpOnly off, Secure off

OK               3
WARN             4
FAIL             0
Mostrar somente avisos e erros
doctor -q -j
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
{
    "summary": {
        "ok": 27,
        "warn": 16,
        "fail": 0
    },
    "checks": [
        {
            "group": "platform",
            "name": "opcache",
            "status": "warn",
            "detail": "disabled or unavailable"
        },
        {
            "group": "extensions",
            "name": "curl",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "mbstring",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "zip",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "mysqli",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "imap",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "imagick",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "bz2",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "files",
            "name": "extensions",
            "status": "warn",
            "detail": "training-runtime/sandbox_fixture/extensions.php [ro]"
        },
        {
            "group": "files",
            "name": "asset-css",
            "status": "warn",
            "detail": "not installed"
        },
        {
            "group": "files",
            "name": "asset-js",
            "status": "warn",
            "detail": "not installed"
        },
        {
            "group": "repo",
            "name": "install-api",
            "status": "warn",
            "detail": "undefined"
        },
        {
            "group": "security",
            "name": "https",
            "status": "warn",
            "detail": "not detected"
        },
        {
            "group": "security",
            "name": "authorization",
            "status": "warn",
            "detail": "disabled build"
        },
        {
            "group": "security",
            "name": "expose-php",
            "status": "warn",
            "detail": "1"
        },
        {
            "group": "security",
            "name": "cookie",
            "status": "warn",
            "detail": "HttpOnly off, Secure off"
        }
    ]
}
Retornar JSON legível por máquina
doctor --json
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
{
    "summary": {
        "ok": 27,
        "warn": 16,
        "fail": 0
    },
    "checks": [
        {
            "group": "platform",
            "name": "php",
            "status": "ok",
            "detail": "8.4.24 cli"
        },
        {
            "group": "platform",
            "name": "memory",
            "status": "ok",
            "detail": "-1"
        },
        {
            "group": "platform",
            "name": "execution",
            "status": "ok",
            "detail": "0 s"
        },
        {
            "group": "platform",
            "name": "upload",
            "status": "ok",
            "detail": "upload 2M, post 8M"
        },
        {
            "group": "platform",
            "name": "session",
            "status": "ok",
            "detail": "/var/lib/php/sessions"
        },
        {
            "group": "platform",
            "name": "opcache",
            "status": "warn",
            "detail": "disabled or unavailable"
        },
        {
            "group": "extensions",
            "name": "session",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "json",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "tokenizer",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "filter",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "hash",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "pcre",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "curl",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "openssl",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "fileinfo",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "mbstring",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "zip",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "phar",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "mysqli",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "imap",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "exif",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "imagick",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "extensions",
            "name": "sodium",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "zlib",
            "status": "ok",
            "detail": "loaded"
        },
        {
            "group": "extensions",
            "name": "bz2",
            "status": "warn",
            "detail": "optional"
        },
        {
            "group": "files",
            "name": "lil",
            "status": "ok",
            "detail": "training-runtime/lil.php [w]"
        },
        {
            "group": "files",
            "name": "cwd",
            "status": "ok",
            "detail": "sandbox [w]"
        },
        {
            "group": "files",
            "name": "base",
            "status": "ok",
            "detail": "sandbox [w]"
        },
        {
            "group": "files",
            "name": "extensions",
            "status": "warn",
            "detail": "training-runtime/sandbox_fixture/extensions.php [ro]"
        },
        {
            "group": "files",
            "name": "temp",
            "status": "ok",
            "detail": "/tmp [w]"
        },
        {
            "group": "files",
            "name": "disk",
            "status": "ok",
            "detail": "29.7 GB free of 31.5 GB"
        },
        {
            "group": "files",
            "name": "asset-css",
            "status": "warn",
            "detail": "not installed"
        },
        {
            "group": "files",
            "name": "asset-js",
            "status": "warn",
            "detail": "not installed"
        },
        {
            "group": "repo",
            "name": "endpoint",
            "status": "ok",
            "detail": "https://repo.lil.dog"
        },
        {
            "group": "repo",
            "name": "install-api",
            "status": "warn",
            "detail": "undefined"
        },
        {
            "group": "repo",
            "name": "installer",
            "status": "ok",
            "detail": "latest v1.4.6"
        },
        {
            "group": "security",
            "name": "https",
            "status": "warn",
            "detail": "not detected"
        },
        {
            "group": "security",
            "name": "authorization",
            "status": "warn",
            "detail": "disabled build"
        },
        {
            "group": "security",
            "name": "display-errors",
            "status": "ok",
            "detail": "0"
        },
        {
            "group": "security",
            "name": "url-include",
            "status": "ok",
            "detail": ""
        },
        {
            "group": "security",
            "name": "expose-php",
            "status": "warn",
            "detail": "1"
        },
        {
            "group": "security",
            "name": "cookie",
            "status": "warn",
            "detail": "HttpOnly off, Secure off"
        },
        {
            "group": "security",
            "name": "lil-mode",
            "status": "ok",
            "detail": "0644"
        }
    ]
}
Retornar JSON legível por máquina
doctor repo -j
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
{
    "summary": {
        "ok": 2,
        "warn": 1,
        "fail": 0
    },
    "checks": [
        {
            "group": "repo",
            "name": "endpoint",
            "status": "ok",
            "detail": "https://repo.lil.dog"
        },
        {
            "group": "repo",
            "name": "install-api",
            "status": "warn",
            "detail": "undefined"
        },
        {
            "group": "repo",
            "name": "installer",
            "status": "ok",
            "detail": "latest v1.4.6"
        }
    ]
}
Verificar tudo
doctor unknown
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
?
Verificar tudo
doctor -z
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
?
Verificar tudo
doctor platform extensions
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
?
Mostrar somente avisos e erros
doctor files -q
Exemplo didático — ambiente PHP, servidor e respostas do repositório simulados
! extensions  training-runtime/sandbox_fixture/extensions.php [ro]
! asset-css   not installed
! asset-js    not installed

OK            5
WARN          3
FAIL          0

Documentação relacionada

Versão pública atual

v1.1.42026-11-01

Refinamento de produção

Versão estável atual de doctor. doctor reúne verificações de PHP, extensões, arquivos do projeto, acesso ao repositório e segurança básica em um único relatório.