Seus "dados extras" estão sendo enviados pelo seu script para um erro padrão, não para uma saída padrão.
why is the extended data missing when i execute this script via web ?
Como a interface CGI usada entre o servidor seb e o seu script leva em consideração apenas o fluxo de saída do script, não o fluxo de erro padrão. O erro padrão está indo para outro lugar, possivelmente para o log de erros do servidor web, possivelmente em nenhum lugar.
why is it there when i execute it via command line ?
Como em um terminal, a saída padrão e o erro padrão passam, por padrão, para o mesmo local, que é o próprio terminal.
how can i make sure it is also there when executed via web ?
Você pode redirecionar o erro padrão para o mesmo local da saída padrão:
exec 2>&1
(descritor de arquivo 2 é erro padrão, descritor de arquivo 1 é saída padrão.)