Acontece que o problema foi uma combinação de PEBKAC e o cabeçalho Content-type
. Ao fazer:
header('Content-Type: application/xhtml+xml; charset=UTF-8');
o navegador espera então um documento XML válido. Quando há erros específicos, faz com que o documento não seja exibido no navegador, mesmo que o conteúdo tenha sido enviado. A visualização da origem da página mostra que o erro foi, de fato, enviado com êxito ao navegador junto com todo o outro código. Meu problema era que eu assumi que nada estava ecoando porque tudo que eu via era branco.