2017-04-03 3 views
0

php5.5에서 php7로 사이트를 전환했는데 이제는 매우 이상한 버그가 있습니다. 리디렉션이 포함 된 특정 Ajax 요청을 수행하면 서버가 HTTP 500 오류 코드로 응답합니다. , 좋은 html 콘텐츠를 반환하는 동안 (나는 크롬 콘솔에서 볼 수있다).php7을 사용하는 ajax의 오류 500

내가 php5에서 똑같은 요청을하면 더 이상 오류가 없습니다. 아약스없이 새로운 탭에서 php7에서 똑같은 요청을 할 때 더 이상 오류가 없습니다. 그리고 낯선 사람, 때로는 코드에 var_dump를 추가 할 때 더 이상 오류가 없습니다.

500 개의 오류 코드가있을 때 로그에 아무 것도 표시되지 않으며 HTML 콘텐츠에 오류가 표시되지 않습니다.

HTTP/1.1 500 Internal Server Error 
Date: Mon, 03 Apr 2017 10:44:20 GMT 
Server: Apache 
Expires: Tue, 04 Apr 2017 10:44:20 GMT 
Accept-Ranges: bytes 
Set-Cookie: PHPSESSID=25e73849544a66f7512533246cde4d21; path=/ 
Last-Modified: Mon, 03 Apr 2017 10:44:20 GMT 
Content-Length: 11718 
Connection: close 
Content-Type: text/html; charset=utf-8 

그리고 오류없이

가 (내가 위해서 var_dump를 추가 한 후) :
HTTP/1.1 200 OK 
Date: Mon, 03 Apr 2017 10:45:44 GMT 
Server: Apache 
Vary: Accept-Encoding 
Content-Encoding: gzip 
Content-Length: 3223 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html; charset=UTF-8 

요 잘못 될 수 있는지의 어떤 생각을 가지고 있습니까 여기

는 응답 헤더 파크 오류입니다?

+0

올바른 로그 파일을 선택했는지 확인하고, PHP가 처음에 오류를 기록하도록 설정했는지 확인하십시오. – CBroe

+0

나는 경고를 많이 받았고 무시할 것임을 알았지 만 (무시할 수 있다면 무시할 수 있음) 오류는 없다. 여기 내 로그 설정이다 :;' 'set_exception_handler();' 'set_error_handler();' 'debug_backtrace() '는 error_reporting (E_ALL & ~ E_NOTICE & ~ E_STRICT & ~ E_WARNING & ~ E_DEPRECATED); ' '위해서는 ini_set ('html_errors', TRUE);' '위해서는 ini_set ('display_errors를', 1);' '위해서는 ini_set ('display_startup_errors', 1);' 편집 : 그나마 나은에 코드를 포맷하는 방법을 알고 주석을 달아주세요. – Yrtiop

+0

문제 코드를 넣으십시오. – hassan

답변

0

문제점을 발견했는데, 기본적으로 500 HTTP 오류가있는 헤더를 시작한 코드에 사용자 정의 예외가 있지만 어쨌든 예외로 인해 헤더가 시작된 후 스크립트가 종료되지 않았습니다.

public function __construct($message = "Critical error", $code = 500, Exception $previous = Null) { 
    parent::__construct($message, $code, $previous); 
    if($this->getHttpHeader()) 
     header($this->getHttpHeader()); 
    } 

    public function getHttpHeader() { 
    $header = get_header_for_code($this->getCode()); 
    $this->http_header = $header; 
    return $this->http_header; 
    } 

을하지만 문제는 php7과 특정 조건에 왜 나는 아직도 모른다, 나는 찾을 시간이 없다 : 매우 하드를 찾을 수 있습니다.