![](/img/trans.png)
[英]PHP form not working (always_populate_raw_post_data = -1 )
[英]always_populate_raw_post_data - Trouble accessing request payload from Backbone create
我正在嘗試在服務器上運行SLIM php框架的情況下,使用Backbone.js RESTful地將集合保存到數據庫中。
這是我的收藏:
var newUser = this.collection.create(
formData,
{
wait: true,
success: $.proxy(function() {
this.collection.currentUser = newUser;
App.Router.navigate('', { trigger: true });
}, this)
}
);
這是我的SLIM路線:
$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();
在集合上調用create()
時,服務器響應中將出現棄用警告:
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
我已按照這些說明進行了以下操作:
我在路線之前添加了以下內容:
ini_set('always_populate_raw_post_data', '-1');
從我的POST路由中,我試圖接收請求有效負載,如下所示:
$request = file_get_contents('php://input');
更改我的代碼后,得到的響應保持不變...
編輯
即使回調為空,也會發生錯誤。
$api->post('/users', function() use($api, $db) {
// nothing
});
PHP 5.6中有一個錯誤。 always_populate_raw_post_data
默認值為0
。 即使您的代碼不使用$HTTP_RAW_POST_DATA
這也會導致PHP引發警告。 有人聲稱在某些文本已經輸出后調用header()
時會發生這種情況。 嘗試使用ini_set()
沒有幫助。
您必須改為直接在php.ini中更改配置。
always_populate_raw_post_data = -1
PHP內部的相關討論 。
基本上,您可以解決Automatically populating $HTTP_RAW_POST_DATA is deprecated...
錯誤Automatically populating $HTTP_RAW_POST_DATA is deprecated...
有幾種方式,
將always_populate_raw_post_data更改為-1 php.ini文件將解決此問題。 但是,如果您對php.ini文件沒有足夠的控制,則會成為問題。 您可以想到共享托管。
將.htaccess文件更改為您的應用程序目錄。 這將僅對您的應用程序提供隔離的控制。 它不會影響其他應用程序執行的APACHE或PHP。
<IfModule mod_php5.c> php_value always_populate_raw_post_data -1 </IfModule>
我建議第二種方法。 因為它允許您將應用程序放置在共享托管和專用服務器托管中。
您可以通過Slim的請求對象請求POST數據。
$api->post('/users', function() use ($api) {
var_dump($api->request()->post());
var_dump($api->request()->post('specificKey'));
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.