always_populate_raw_post_data - Probleme beim Zugriff auf Anforderungsnutzdaten von Backbone create

7

Ich versuche, eine Sammlung in meiner Datenbank zu speichern, die RESTfully Backbone.js mit dem SLIM php Rahmenwerk verwendet, das auf meinem Server läuft.

Hier ist meine Sammlung:

%Vor%

Hier ist meine SLIM Route:

%Vor%

Wenn ich create() für meine Sammlung anrufe, erhalte ich eine Verwarnungswarnung in der Antwort des Servers:

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

Ich habe diese Anweisungen befolgt und folgendes getan:

Ich habe dies vor meinen Routen hinzugefügt:

%Vor%

und von meiner POST-Route aus habe ich versucht, die Anfrage-Payload wie folgt zu empfangen:

%Vor%

Nach dieser Änderung an meinem Code ist die Antwort, die ich erhalte, gleich geblieben ...

BEARBEITEN

Der Fehler tritt auch bei einem leeren Callback auf ....

%Vor%     
loxyboi 02.02.2015, 13:21
quelle

3 Antworten

21

Es gibt einen Fehler in PHP 5.6. Der Standardwert von always_populate_raw_post_data ist 0 . Dies führt dazu, dass PHP Warnungen ausgibt, auch wenn Ihr Code $HTTP_RAW_POST_DATA nicht verwendet. Einige behaupten, dass dies passiert, wenn header() aufgerufen wird, nachdem bereits Text ausgegeben wurde. Der Versuch, ini_set() zu verwenden, hilft nicht.

Sie müssen stattdessen die Konfiguration direkt in der php.ini ändern.

%Vor%

Verwandte Diskussion in PHP-Interna

    
Mika Tuupola 03.02.2015, 05:02
quelle
1

Grundsätzlich können Sie Automatically populating $HTTP_RAW_POST_DATA is deprecated... error auf verschiedene Arten auflösen,

  1. PHP-Einstellungen

Durch das Ändern von always_populate_raw_post_data in die -1 php.ini-Datei wird das Problem behoben. Es wird jedoch das Problem, wo Sie nicht genügend Kontrolle über die php.ini-Datei haben. Sie können an Shared Hosting denken.

  1. APACHE-EINSTELLUNGEN

Ändern Sie die .htaccess-Datei in Ihr Anwendungsverzeichnis. Dies gibt nur eine isolierte Kontrolle über Ihre Anwendung. Es wird weder APACHE noch PHP anderer Anwendungsausführung beeinflussen.

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

Und ich würde den zweiten Ansatz empfehlen. Da Sie Ihre Anwendung sowohl im Shared Hosting als auch im dedizierten Server Hosting platzieren können.

    
HILARUDEEN ALLAUDEEN 15.07.2016 07:13
quelle
0

Sie können die POST-Daten über das Anfrageobjekt anfordern, das von Slim stammt.

%Vor%

Hier ist die Dokumentation: Ссылка

    
Tuim 02.02.2015 13:34
quelle