doctor

doctor réunit dans un rapport les contrôles de PHP, extensions, fichiers du projet, accès au dépôt et sécurité de base.

DiagnosticVersion 1.1.4Stable
lil-terminal

Vue d’ensemble

Commencez par doctor si la même installation lil-terminal se comporte différemment sur deux hébergements. Affinez ensuite avec platform, extensions, files, repo ou security.

Identifier d’abord la couche en cause

doctor ne répare pas automatiquement le serveur. Il sépare limites de plateforme, extensions absentes, problèmes de fichiers, connectivité du dépôt et configuration de sécurité afin que l’action suivante repose sur des faits.

Syntaxe

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

Référence

doctor

tout vérifier

doctor platform

afficher les contrôles PHP, SAPI, limites, session et OPcache

doctor extensions

afficher les contrôles des extensions PHP

doctor files

vérifier chemins du projet, droits et stockage

doctor repo

vérifier le dépôt lil

doctor security

vérifier HTTPS, autorisation et cookies

-q

afficher uniquement avertissements et erreurs

-j

renvoyer un JSON exploitable par machine

Aperçu interactif du sandbox

Lancez les exemples préparés directement sur la page. Les résultats sont prédéfinis et affichés dans le navigateur ; aucune commande terminal n’est exécutée sur le serveur.

Contrôler les fichiers du projet puis n’afficher que les problèmes

Installer et gérer

Installez la version compatible actuelle. Choisissez Base pour l’ensemble complet des fonctions ou Minimum pour le paquet réduit ; utilisez upgrade pour mettre à jour un module déjà installé.

Base et Minimum sont deux paquets de la même version actuelle du module.

Paquet Base

Installer le paquet complet avec référence locale et tous les modes publiés.

install doctor
Paquet Minimum

Installer le paquet réduit. La référence locale est omise ; help <cmd> -i ouvre la référence serveur actuelle.

install doctor -m
Version publique exacte

Installer exactement cette version publiée.

install doctor -v 1.1.4
Vérifier ou mettre à jour

upgrade vérifie la compatibilité et remplace le bloc seulement si nécessaire.

upgrade doctor
Supprimer le module

Supprimer le bloc d’extension sans toucher au noyau ni aux autres modules.

install doctor -u

Exemples

Les exemples sont copiables mais ne sont pas exécutés par le site. Vérifiez chemins, droits et options destructrices.

Contrôler les fichiers du projet puis n’afficher que les problèmes
doctor
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
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
Afficher les contrôles PHP, SAPI, limites, session et OPcache
doctor platform
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
+ 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
Afficher les contrôles des extensions PHP
doctor extensions
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
+ 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
Vérifier chemins du projet, droits et stockage
doctor files
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
+ 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
Vérifier le dépôt lil
doctor repo
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
+ endpoint     https://repo.lil.dog
! install-api  undefined
+ installer    latest v1.4.6

OK             2
WARN           1
FAIL           0
Vérifier HTTPS, autorisation et cookies
doctor security
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
! 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
Afficher uniquement avertissements et erreurs
doctor -q
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
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
Renvoyer un JSON exploitable par machine
doctor -j
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
{
    "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"
        }
    ]
}
Refuser un groupe de diagnostic inconnu
doctor platform -q
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
! opcache  disabled or unavailable

OK         5
WARN       1
FAIL       0
Renvoyer un JSON exploitable par machine
doctor extensions -j
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
{
    "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"
        }
    ]
}
Afficher uniquement avertissements et erreurs
doctor security -q
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
! https          not detected
! authorization  disabled build
! expose-php     1
! cookie         HttpOnly off, Secure off

OK               3
WARN             4
FAIL             0
Afficher uniquement avertissements et erreurs
doctor -q -j
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
{
    "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"
        }
    ]
}
Renvoyer un JSON exploitable par machine
doctor --json
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
{
    "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"
        }
    ]
}
Renvoyer un JSON exploitable par machine
doctor repo -j
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
{
    "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"
        }
    ]
}
Tout vérifier
doctor unknown
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
?
Tout vérifier
doctor -z
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
?
Tout vérifier
doctor platform extensions
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
?
Afficher uniquement avertissements et erreurs
doctor files -q
Exemple pédagogique — environnement PHP, serveur et réponses du dépôt simulés
! extensions  training-runtime/sandbox_fixture/extensions.php [ro]
! asset-css   not installed
! asset-js    not installed

OK            5
WARN          3
FAIL          0

Documentation associée

Version publique actuelle

v1.1.42026-11-01

Affinage de production

Version stable actuelle de doctor. doctor réunit dans un rapport les contrôles de PHP, extensions, fichiers du projet, accès au dépôt et sécurité de base.