always_populate_raw_post_data - Probleme beim Zugriff auf Anfrage-payload vom Rückgrat erstellen
Ich bin versucht zu retten, eine Sammlung zu meiner Datenbank Erholsam mit Backbone.js mit der SLIM php framework läuft auf meinem server.
Hier ist meine Sammlung:
var newUser = this.collection.create(
formData,
{
wait: true,
success: $.proxy(function() {
this.collection.currentUser = newUser;
App.Router.navigate('', { trigger: true });
}, this)
}
);
Hier ist meine SLIM route:
$api->post('/users', function() use($api, $db) {
$request = $api->request()->post();
$api->response()->header('Content-Type', 'application/json');
$result = $db->users()->insert($user);
if( $result ) {
echo json_encode(array(
'id' => $result['id']
));
}
else {
echo json_encode(array(
'status' => false,
'message' => 'error_creating_user'
));
}
});
$api->run();
Beim Aufruf create()
auf meine Sammlung, ich bekomme eine deprecation-Warnung 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
Habe ich befolgt diese Anleitung und Folgendes getan:
Habe ich dieses vor meiner Routen:
ini_set('always_populate_raw_post_data', '-1');
und aus meiner POST-route, die ich habe versucht, eine Anfrage zu empfangen Nutzlast etwa so:
$request = file_get_contents('php://input');
Nachdem diese änderung zu meinem code, die Antwort, die ich erhalte ist das gleiche geblieben...
BEARBEITEN
Tritt der Fehler auch mit einer leeren Rückruf....
$api->post('/users', function() use($api, $db) {
//nothing
});
- Möglich, Duplikat der Warnung über " $HTTP_RAW_POST_DATA` veraltet
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es einen bug in PHP 5.6. Standardwert
always_populate_raw_post_data
ist0
. Dies bewirkt, dass PHP zu werfen Warnungen selbst wenn Ihr code nicht$HTTP_RAW_POST_DATA
. Einige behaupten, es passiert beim Aufrufheader()
nach einigen text bereits ausgegeben wurden. Versuchen, zu verwendenini_set()
nicht helfen.Müssen Sie ändern Sie die config direkt in php.ini statt.
Verwandte Diskussion in der PHP-internals.
Grundsätzlich kann man beheben
Automatically populating $HTTP_RAW_POST_DATA is deprecated...
Fehler in paar Möglichkeiten,Ändern always_populate_raw_post_data auf -1 php.ini-Datei um das Problem zu beheben. Allerdings wird es zum problem, wo Sie haben nicht genug Kontrolle der php.ini-Datei. Sie können denken von shared hosting.
Ändern .htaccess-Datei in Ihrem Verzeichnis der Anwendung. Diese geben isoliert, die Kontrolle über Ihre Anwendung nur. Es wird sich weder APACHE, noch PHP anderen Ausführung der Anwendung.
<IfModule mod_php5.c>
php_value always_populate_raw_post_data -1
</IfModule>
Und ich würde empfehlen die zweite Methode. Denn es ermöglicht Ihnen, Ihre Anwendung im shared hosting und dedicated server-hosting.
Können Sie verlangen, die POST-Daten über das request-Objekt, das kommt von der Slim.
Hier ist die Dokumentation: http://docs.slimframework.com/#Request-Variables