PHP / Apache: várias chamadas para o cabeçalho () não funcionam

1

No meu arquivo PHP eu tenho este código (não o código real, apenas para fins de demonstração):

ob_start();
var_export(headers_sent());
var_export(ob_get_status());
header('Content-Type: text/html');
header('Content-Type: application/json');

Mas os cabeçalhos de resposta acabam sendo text/html em vez de application/json . Pelo que entendi, a última chamada para header() deve ser o que é usado - espacially, pois headers_sent() retorna falso e ob_get_status() também confirma que o buffer de saída está ativado.

Em documentação do PHP para header() ele diz esta declaração no changelog para a versão 5.1. 2:

This function now prevents more than one header to be sent at once as a protection against header injection attacks.

Eu não tenho certeza do que isso significa - porque isso certamente não tem sido um problema o tempo todo desde o PHP 5.1.2.

E até o WordPress está confiando em chamar header() várias vezes, por exemplo. em wp-admin/admin-ajax.php , onde no início do arquivo chama @header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) ); e, mais tarde, quando determinou que a ação precisa retornar dados JSON, chama @header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) ); em wp_send_json() in wp-includes/functions.php .

Existe alguma mudança que eu possa fazer no servidor para fazer o PHP usar o último tipo de conteúdo? Obviamente, não posso alterar os arquivos principais do Wordpress.

Eu uso Debian 9.3, PHP 7.1.3, Apache 2.4.25.

Observação do site: O efeito desse problema é que a Biblioteca de Mídia não carrega nenhuma imagem no modo de grade e o indicador de atividade continua girando.

!! UPDATE !!

Agora descobri que isso acontece porque tenho o seguinte no meu arquivo .htaccess :

php_value output_handler mb_output_handler

Eu esqueci porque eu tenho isso lá, então não tenho certeza que ouso removê-lo ... Mas por que ele tem esse efeito?

    
por TheStoryCoder 27.02.2018 / 18:57

0 respostas