【发布时间】:2013-08-24 16:05:38
【问题描述】:
php://input 在 localhost 中正常工作。但在服务器中它返回空。
我网站的输入(请求)是json(REST - application/json 类型),所以$_POST 不起作用(请阅读This question)。
$_POST 适用于 key-value 对类型的输入,例如 form-data 或 x-www-urlencoded
key1=value1&key2=value2&key3=value3
我使用 application/json 作为输入(在 REST 中)。
喜欢{'key1':'value1','key2':'value2','key3':'value3'}
这无法使用$_POST 处理。但是使用php://input 可以帮助读取该数据。
我的代码
class Webservice_Controller extends CI_Controller {
public $json_input_data;
public function __construct(){
parent::__construct();
$this->json_input_data = json_decode(file_get_contents('php://input'),TRUE);
}
public function json_input($label){
if(isset($this->json_input_data[$label])) return $this->json_input_data[$label];
else return NULL;
}
}
上面的代码在另一个网络服务器上也可以正常工作,但在当前的网络服务器上不行。 :(
我认为我的网络服务器拒绝访问php://input。
还有其他方法可以读取php中的json输入吗?
【问题讨论】:
-
首先要检查,php 版本是否相同,是否设置了
allow_fopen_url -
在
__construct()中尝试var_dump($this->json_input_data ) -
@RohanKumar -> 它在我托管的服务器中打印“NULL”。在 localhost 中打印 "array(2) { ["id"]=> string(2) "79" ["t"]=> string(5) "22_00" }"。
-
@DevZer0 PHP 版本是 5.3,它支持。我没有在我的控制面板中找到访问 php.ini 文件的选项(它是共享服务器)。有什么方法可以测试吗?请帮助..
标签: php json codeigniter rest