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>
pull/62718/head
parent
4999cd8cd2
commit
0cd4ece504
Loading…
Reference in new issue