Files
Misha M.-Kupriyanov 88d023c2db fix(console): write app command loading errors to stderr
fix(console): write app command loading errors to stderr

When an app fails to load its commands from info.xml, the error was

written to stdout, while every other diagnostic in loadCommands() uses

$output->getErrorOutput(). The command itself then runs normally and

exits 0, so the message silently corrupts machine-readable output:

    $ ./occ app:list --output=json

    Connection refused

    {"enabled":{...},"disabled":{...}}

    $ echo $?

    0

Anything piping `occ <cmd> --output=json` into a JSON parser breaks, with

no non-zero exit code to detect it by.

Observed with notify_push on a setup that has the phpredis extension

loaded but no Redis configured: RedisFactory::isAvailable() only checks

whether the extension is loaded, so constructing the app's console

commands ends up calling pconnect() and throws RedisException.

--no-warnings is not a workaround for this, as it sets VERBOSITY_QUIET

and suppresses the payload too.

Route the message to the error output instead. It is still reported via

logger->error() exactly as before.

Assisted-by: ClaudeCode:claude-opus-5

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
2026-08-08 12:03:07 +02:00
..