복붙노트

`$ HTTP_RAW_POST_DATA`에 대한 경고

PHP

`$ HTTP_RAW_POST_DATA`에 대한 경고

PHP 5.6.0으로 전환했는데 이제는 다음과 같은 경고가 나타납니다.

Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will
be removed in a future version. To avoid this warning set
'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream
instead. in Unknown on line 0

Warning: Cannot modify header information - headers already sent in Unknown on line 0

좋아, 일부 비추천 기능에 의존합니다. 나는 그렇지 않다는 것을 제외하고!

이 값을 -1로 설정하여 "경고를 피하기"를 원하지 않습니다. 이것은 경고를 숨기고, 여전히 비추천 된 구성을 갖습니다. 나는 그 근원에서 문제를 해결하고 PHP가 HTTP_RAW_POST_DATA populating이 켜져 있다고 생각하는 이유를 알고 싶다.

해결법

  1. ==============================

    1.오류 메시지에 대한 제 이해가 잘못되었습니다. 나는 그것이 단어의 매우 가난한 선택을 특징으로한다고 말할 것이다. 인터넷 검색은 다른 사람이 내가 한 것과 똑같이 메시지를 오해 한 것으로 나타났습니다 - PHP 버그 # 66763을 참조하십시오.

    오류 메시지에 대한 제 이해가 잘못되었습니다. 나는 그것이 단어의 매우 가난한 선택을 특징으로한다고 말할 것이다. 인터넷 검색은 다른 사람이 내가 한 것과 똑같이 메시지를 오해 한 것으로 나타났습니다 - PHP 버그 # 66763을 참조하십시오.

    완전히 도움이되지 않으면 "이것은 RM이 원했던 방식입니다." Miracle의 버그에 대한 반응으로 Tyrael는 "-1"로 설정해도 경고가 사라지는 것은 아닙니다. 그것은 옳은 일을합니다. 즉 범인 변수를 채우지 못하게합니다. 0으로 설정하면 STILL이 특정 상황에서 데이터를 채 웁니다. 나쁜 디자인에 대해 이야기하십시오! PHP RFC 인용 :

    그래서 -1로 설정하면 메시지가 말한 것과 같은 경고를 피할 수있을뿐만 아니라 마침내이 변수를 채울 수 없게됩니다. 이는 내가 원하는 것입니다.

  2. ==============================

    2.나는 nginx 서버 (DigitalOcean)에서 같은 문제를 경험했다. 내가해야만하는 일은 루트로 로그인하고 /etc/php5/fpm/php.ini 파일을 수정하는 것이다.

    나는 nginx 서버 (DigitalOcean)에서 같은 문제를 경험했다. 내가해야만하는 일은 루트로 로그인하고 /etc/php5/fpm/php.ini 파일을 수정하는 것이다.

    always_populate_raw_post_data로 라인을 찾으려면 먼저 grep을 실행하십시오.

    grep -n 'always_populate_raw_post_data' php.ini
    

    그것이 라인 704를 돌려 줬다.

    704:;always_populate_raw_post_data = -1
    

    vi 편집기를 사용하여 php.ini 파일을 열면됩니다.

    vi +704 php.ini
    

    세미콜론을 제거하여 주석을 제거하고 파일을 저장하십시오. wq

    마지막으로 서버를 재부팅하면 오류가 사라집니다.

  3. ==============================

    3.한동안이 오류를 발견 할 때까지. 이 문제에 비틀 거릴 수있는 사람을 위해 내 대답을하십시오.

    한동안이 오류를 발견 할 때까지. 이 문제에 비틀 거릴 수있는 사람을 위해 내 대답을하십시오.

    오류는 빈 POST 요청을 보내는 중임을 나타냅니다. 이 오류는 일반적으로 매개 변수를 전달하지 않고 HTTPRequests에서 발견됩니다. 이 오류를 피하기 위해, php.ini를 변경하지 않고 항상 매개 변수를 POST에 추가 할 수 있습니다.

    처럼:

    $.post(URL_HERE
        ,{addedvar : 'anycontent'}
        ,function(d){
           doAnyHere(d);
        }
        ,'json' //or 'html','text'
    );
    
  4. ==============================

    4.php.ini에서 always_populate_raw_post_data 프로퍼티를 추가하거나 주석 처리를 제거하고 그 값을 -1로 설정해야합니다. 필자의 경우 php.ini는 다음 위치에 있습니다.

    php.ini에서 always_populate_raw_post_data 프로퍼티를 추가하거나 주석 처리를 제거하고 그 값을 -1로 설정해야합니다. 필자의 경우 php.ini는 다음 위치에 있습니다.

    C : \ wamp64 \ bin \ php \ php5.6.25 \ php.ini

    마지막으로 WAMP를 다시 시작합니다 (또는 모든 서비스 다시 시작을 클릭).

  5. ==============================

    5.주석 처리 해제

    주석 처리 해제

    always_populate_raw_post_data = -1 
    

    php.ini (line # 703)에서 APACHE 서비스를 다시 시작하면 어쨌든 메시지를 제거 할 수 있습니다.

    ; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is
    ; to disable this feature and it will be removed in a future version.
    ; If post reading is disabled through enable_post_data_reading,
    ; $HTTP_RAW_POST_DATA is *NOT* populated.
    ; http://php.net/always-populate-raw-post-data
    ; always_populate_raw_post_data = -1
    
  6. ==============================

    6..htaccess 파일을 사용할 수없는 경우 루트 폴더에서이 코드 줄을 생성하십시오.

    .htaccess 파일을 사용할 수없는 경우 루트 폴더에서이 코드 줄을 생성하십시오.

    이것을 .htaccess 파일에 넣으십시오 (API에 대해 잘 작동하는지 테스트).

    <IfModule mod_php5.c>
        php_value always_populate_raw_post_data -1
    </IfModule>
    
  7. ==============================

    7.php.init를 변경 한 후에도 여전히이 문제에 시달린 사람에게는 받아 들여지는 대답이 제시하고 있습니다. 모든 매개 변수없이 POST를 통해 ajax 청원을하면 오류가 발생하므로 send 메소드를 GET으로 변경하십시오.

    php.init를 변경 한 후에도 여전히이 문제에 시달린 사람에게는 받아 들여지는 대답이 제시하고 있습니다. 모든 매개 변수없이 POST를 통해 ajax 청원을하면 오류가 발생하므로 send 메소드를 GET으로 변경하십시오.

    var xhr = $.ajax({
       url:  url,
       type: "GET",
       dataType: "html",
       timeout: 500,
    });
    

    어떤 이유로 든 POST 메서드를 유지하려는 경우 다른 옵션은 ajax 속성에 빈 JSON 개체를 추가하는 것입니다.

    var xhr = $.ajax({
       url:  url,
       type: "POST",
       data: {name:'emtpy_petition_data', value: 'empty'}
       dataType: "html",
       timeout: 500,
    });
    
  8. ==============================

    8.html 폼 (Post 메서드)에서 데이터를 보낼 때이 오류 메시지가 나타납니다. 필자가해야 할 일은 "text / plain"에서 "application / x-www-form-urlencoded"또는 "multipart / form-data"로 인코딩을 변경하는 것뿐입니다. 오류 메시지는 오도 된 것입니다.

    html 폼 (Post 메서드)에서 데이터를 보낼 때이 오류 메시지가 나타납니다. 필자가해야 할 일은 "text / plain"에서 "application / x-www-form-urlencoded"또는 "multipart / form-data"로 인코딩을 변경하는 것뿐입니다. 오류 메시지는 오도 된 것입니다.

  9. ==============================

    9.; always_populate_raw_post_data = -1 php.init에서 이 줄의 주석을 제거하십시오 .. always_populate_raw_post_data = -1

    ; always_populate_raw_post_data = -1 php.init에서 이 줄의 주석을 제거하십시오 .. always_populate_raw_post_data = -1

  10. from https://stackoverflow.com/questions/26261001/warning-about-http-raw-post-data-being-deprecated by cc-by-sa and MIT license