PHP가 출력을 시작하는지 확인
6856 단어 PHP
이렇게 하면 버퍼링이 돼서 틀리지 않을 거예요.
no_err.php
<?php
echo "start".PHP_EOL;
header('Content-Type: text/plain');
echo "end".PHP_EOL;
//結果
//start
//end
버퍼 닫기플래시 ()는 헤더를 보내고 헤더 ()는 오류가 발생합니다.err.php
<?php
echo "start".PHP_EOL;
ob_flush();//出力開始
header('Content-Type: text/plain');
echo "end".PHP_EOL;
//結果
//start
//Warning: Cannot modify header information - headers already sent by
//(output started at /home/test/html/err.php:3) in /home/test/html/err.php
//on line 4
//end
출력을 시작하면 제목도 출력할 거예요,headerssent ()를 보면 됩니다.headers_sent.php
<?php
echo "start".PHP_EOL;
ob_flush();//出力開始
if(headers_sent()){
echo "出力が始まってる!".PHP_EOL;
}else{
header('Content-Type: text/plain');
}
echo "end".PHP_EOL;
//結果
//start 出力が始まってる! end
출력이 시작되었는지 확인했습니다.기쁘고 축하할 만하다😇아니에요!
gzip 등을 사용할 때 헤더스sent () 를 검사하더라도 브라우저 측에서 오류가 발생할 수 있습니다.
err_gz.php
<?php
echo "start".PHP_EOL;
if(headers_sent()){
echo "出力が始まってる!".PHP_EOL;
echo "end".PHP_EOL;
}else{
header('Content-Encoding: gzip');
echo gzencode("end".PHP_EOL);
}
Firefox 결과출력하기 전에 헤드셋이 버퍼링이 돼서요. - 네.sent () 시간에 헤더가 발송되지 않았습니다.ob_플래시 ()를 사용하면 메일 헤더 헤더를 보낼 수 있습니다sent ()가 작동하지만 헤더 ()는 사용할 수 없습니다.
그럼 어떡하지?
버퍼의 데이터량만 알면 되니까,obget_콘텐츠 ()에서 버퍼를 검사합니다.
ob_get_contents_gz.php
<?php
echo "start".PHP_EOL;
if(headers_sent() || strlen(ob_get_contents())){
echo "出力が始まってる!".PHP_EOL;
echo "end".PHP_EOL;
}else{
header('Content-Encoding: gzip');
echo gzencode("end".PHP_EOL);
}
//結果
//start 出力が始まってる! end
'start' 를 제외하면 gzip에 의해 'end' 만 표시됩니다.ob_get_contents_gz_2.php
<?php
if(headers_sent() || strlen(ob_get_contents())){
echo "出力が始まってる!".PHP_EOL;
echo "end".PHP_EOL;
}else{
header('Content-Encoding: gzip');
echo gzencode("end".PHP_EOL);
}
//結果
//end
기쁘고 축하할 만하다😇
Reference
이 문제에 관하여(PHP가 출력을 시작하는지 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/riris4488/items/ef22a0c85196bccf0e08텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)