doctor

doctor riunisce in un rapporto controlli di PHP, estensioni, file del progetto, accesso al repository e sicurezza di base.

DiagnosticaVersione 1.1.4Stabile
lil-terminal

Panoramica

Inizia con doctor quando la stessa installazione di lil-terminal si comporta diversamente su due hosting. Poi restringi a platform, extensions, files, repo o security.

Prima individua il livello che non funziona

doctor non ripara automaticamente il server. Separa limiti della piattaforma, estensioni mancanti, problemi del filesystem, accesso al repository e configurazione di sicurezza, così il passo successivo parte da dati concreti.

Sintassi

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

Riferimento

doctor

controllare tutto

doctor platform

mostrare i controlli PHP, SAPI, limiti, sessione e OPcache

doctor extensions

mostrare i controlli delle estensioni PHP

doctor files

controllare percorsi del progetto, permessi e spazio di archiviazione

doctor repo

controllare il repository lil

doctor security

controllare HTTPS, autorizzazione e cookie

-q

mostrare solo avvisi ed errori

-j

restituire JSON leggibile dalla macchina

Anteprima interattiva del sandbox

Esegui gli esempi preparati direttamente nella pagina. I risultati sono predefiniti e mostrati nel browser; sul server non viene eseguito alcun comando del terminale.

Controllare i file del progetto e mostrare solo i problemi

Installa e gestisci

Installa la versione compatibile corrente. Scegli Base per tutte le funzioni o Minimum per il pacchetto ridotto; usa upgrade per aggiornare un modulo già installato.

Base e Minimum sono due pacchetti della stessa release corrente del modulo.

Pacchetto Base

Installa il pacchetto completo con riferimento locale e tutte le modalità pubblicate.

install doctor
Pacchetto Minimum

Installa il pacchetto ridotto. Il riferimento locale è omesso; help <cmd> -i apre il riferimento server corrente.

install doctor -m
Versione pubblica esatta

Installa esattamente questa versione pubblicata.

install doctor -v 1.1.4
Controlla o aggiorna

upgrade controlla la compatibilità e sostituisce il blocco solo quando serve.

upgrade doctor
Rimuovi modulo

Rimuove il blocco estensione senza toccare core e altri moduli.

install doctor -u

Esempi

Gli esempi sono copiabili ma il sito non li esegue. Controlla percorsi, permessi e opzioni distruttive.

Controllare i file del progetto e mostrare solo i problemi
doctor
Esempio didattico — ambiente PHP, server e risposte del repository simulati
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
Mostrare i controlli PHP, SAPI, limiti, sessione e OPcache
doctor platform
Esempio didattico — ambiente PHP, server e risposte del repository simulati
+ 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
Mostrare i controlli delle estensioni PHP
doctor extensions
Esempio didattico — ambiente PHP, server e risposte del repository simulati
+ 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
Controllare percorsi del progetto, permessi e spazio di archiviazione
doctor files
Esempio didattico — ambiente PHP, server e risposte del repository simulati
+ 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
Controllare il repository lil
doctor repo
Esempio didattico — ambiente PHP, server e risposte del repository simulati
+ endpoint     https://repo.lil.dog
! install-api  undefined
+ installer    latest v1.4.6

OK             2
WARN           1
FAIL           0
Controllare HTTPS, autorizzazione e cookie
doctor security
Esempio didattico — ambiente PHP, server e risposte del repository simulati
! 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
Mostrare solo avvisi ed errori
doctor -q
Esempio didattico — ambiente PHP, server e risposte del repository simulati
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
Restituire JSON leggibile dalla macchina
doctor -j
Esempio didattico — ambiente PHP, server e risposte del repository simulati
{
    "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"
        }
    ]
}
Rifiutare un gruppo diagnostico sconosciuto
doctor platform -q
Esempio didattico — ambiente PHP, server e risposte del repository simulati
! opcache  disabled or unavailable

OK         5
WARN       1
FAIL       0
Restituire JSON leggibile dalla macchina
doctor extensions -j
Esempio didattico — ambiente PHP, server e risposte del repository simulati
{
    "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"
        }
    ]
}
Mostrare solo avvisi ed errori
doctor security -q
Esempio didattico — ambiente PHP, server e risposte del repository simulati
! https          not detected
! authorization  disabled build
! expose-php     1
! cookie         HttpOnly off, Secure off

OK               3
WARN             4
FAIL             0
Mostrare solo avvisi ed errori
doctor -q -j
Esempio didattico — ambiente PHP, server e risposte del repository simulati
{
    "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"
        }
    ]
}
Restituire JSON leggibile dalla macchina
doctor --json
Esempio didattico — ambiente PHP, server e risposte del repository simulati
{
    "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"
        }
    ]
}
Restituire JSON leggibile dalla macchina
doctor repo -j
Esempio didattico — ambiente PHP, server e risposte del repository simulati
{
    "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"
        }
    ]
}
Controllare tutto
doctor unknown
Esempio didattico — ambiente PHP, server e risposte del repository simulati
?
Controllare tutto
doctor -z
Esempio didattico — ambiente PHP, server e risposte del repository simulati
?
Controllare tutto
doctor platform extensions
Esempio didattico — ambiente PHP, server e risposte del repository simulati
?
Mostrare solo avvisi ed errori
doctor files -q
Esempio didattico — ambiente PHP, server e risposte del repository simulati
! extensions  training-runtime/sandbox_fixture/extensions.php [ro]
! asset-css   not installed
! asset-js    not installed

OK            5
WARN          3
FAIL          0

Documentazione correlata

Versione pubblica attuale

v1.1.42026-11-01

Rifinitura di produzione

Versione stabile attuale di doctor. doctor riunisce in un rapporto controlli di PHP, estensioni, file del progetto, accesso al repository e sicurezza di base.