[php] 오류 330 (net :: ERR_CONTENT_DECODING_FAILED) :

최근 우리는 새 서버로 마이그레이션했습니다. 2 일 후 다음과 같은 문제가 발생했습니다.

1) 세션 테이블에 충돌이 발생했습니다.이를 복구하여 쉽게 고쳤습니다.

2) OpenX를 광고 서버로 실행하고 충돌도 발생했지만 error.log에는 증거가 없습니다. 로그인 할 수 있지만 dashboard.php를 살펴 보는 순간 다음과 같은 결과가 나타납니다.

Error 330 (net::ERR_CONTENT_DECODING_FAILED): (Google Chrome)

보려는 페이지는 유효하지 않거나 지원되지 않는 압축 형식을 사용하기 때문에 표시 할 수 없습니다. (Firefox)


OpenX는 PHP에서 다음 서비스를 사용합니다.

OpenX는 다음을 필요로합니다 :
http://www.openx.com/docs/2.8/adminguide/System%20requirements

OpenX는 기본 PHP 설정을 사용합니다. 그러나 서버 관리자는 때때로 이러한 설정을 변경합니다. OpenX를 설치하기 전에 다음 설정이 올바른지 확인하십시오.

magic_quotes_runtime은 꺼져 있어야합니다. safe_mode는 꺼져 있어야합니다. register_argc_argv는 명령 줄을 통해 유지 관리를 실행하려는 경우 켜져 있어야합니다. HTTP 파일 업로드를 허용하려면 file_uploads를 켜야합니다. OpenX에는 다음 PHP 확장이 필요합니다.

중 하나를 mysql확장하거나 pgsql. mysqli확장은 지원되지 않습니다. ZLib 확장, Flash MX. FTP 확장입니다. 이것이 존재하지 않으면 OpenX는이를 시뮬레이션하려고하는데, 이는 덜 안정적인 솔루션이 될 수 있습니다.

홈 페이지에서 그래프를 생성하기위한 GD 확장. 확장 기능이 활성화되어 있지 않으면 홈페이지에서 그래프 나 통계를 볼 수 없습니다. 홈 페이지에 로그온하려면 openssl 확장 또는 SSL 사용 curl 확장이 필요합니다. SSL이 활성화되지 않은 경우 홈 페이지에 오류 메시지가 표시되지만 작업에는 영향을주지 않습니다.


가능한 이유 또는 더 많은 정보를 수집하는 방법에 대한 단서가 있으면 감사하겠습니다. 감사



답변

HTTP 요청의 헤더가 콘텐츠가 gzip으로 인코딩되었다고 주장하지만 그렇지 않은 경우 발생합니다. gzip 인코딩 설정을 끄거나 콘텐츠가 실제로 인코딩되었는지 확인합니다.


답변

나는 활성화 zlib.output_compressionphp.ini나를 위해 문제를 해결할 것 같았다.


답변

코드는 기록하는 동안 BOM없이 UTF8을 저장해야합니다. 때때로 (Notepad ++) 또는 기타 코딩 도구로 코드를 작성하고 UTF8 인코딩을 사용하면이 오류가 발생합니다. 죄송합니다. 영어를 모릅니다. 이것은 제 경험입니다.


답변

이 오류는 출력 버퍼링 모듈 확장 (ob_gzhandler)이 추가 되었기 때문에 발생했습니다. ob_start ()를 시작하고 ob_flush ()를 끝낼 때 출력 버퍼링 사용

<?php
    ob_start( 'ob_gzhandler' );
    echo json_encode($array);
    ob_end_flush();
?>

이것을 사용하십시오 :

<?php
    ob_start();
    echo json_encode($array);
    ob_flush();
?>


답변

Codeigniter프레임 워크 를 사용하려면 다음을 구성 파일로 만드십시오.

$config['compress_output'] = FALSE;

그리고 php.ini구성 파일에서 다음을 사용하십시오.

zlib.output_compression=On


답변

ob_start(ob_gzhandler)기능 을 사용 합니까? 그렇다면 ob_start(ob_gzhandler)함수 위에 콘텐츠를 출력 하면이 오류가 발생합니다. 이 기능을 사용할 수 없거나이 기능 위에 콘텐츠를 출력 할 수 없습니다. ob_gzhandler콜백 함수를 수락 할 브라우저를 인코딩하는 내용의 유형을 결정하고 그에 따라 출력합니다. 따라서이 함수 위에 콘텐츠를 출력하면 콘텐츠의 인코딩이의 출력 콘텐츠 ob_gzhandler와 다를 수 있으며 이로 인해이 오류가 발생합니다.


답변

이 혐오스러운 문제의 원인을 찾는 사람이 있다면 원인 파일을 찾을 수있는 해결책이 있습니다. 커뮤니티 에서 https://www.drupal.org/node/1622904#comment-10768958Drupal .

그리고 나는 인용한다 :

편집하다

includes/bootstrap.inc:

기능 drupal_load(). 짧은 기능입니다. 다음 줄 찾기 :
include_once DRUPAL_ROOT . '/' . $filename;
임시로 대체

ob_start();
include_once DRUPAL_ROOT . '/' . $filename;
$value = ob_get_contents();
ob_end_clean();
if ($value !== '') {
  $filename = check_plain($filename);
  $value = check_plain($value);
  print "File '$filename' produced unforgivable content: '$value'.";
  exit;
}