json_encode在下面返回null和块代码

时间:2014-04-12 04:46:31

标签: php json slim

我遇到了PHP中的json_encode()问题。

下面的简单函数是尝试将响应数据发送到API调用。

function makeResponseOK($data) {
    if($data) $response['data'] = $data;
    $response['meta'] = ['msg' => 'OK', 'status' => 200];
    header('Content-type: application/json');
    return json_encode($response, JSON_PRETTY_PRINT);
}     

它对我的MAC完全正常。但是,当我尝试在我的Ubuntu服务器上部署它时,json_encode()根本不起作用,json_encode()下面的任何行都被忽略了。 例如:

echo 'crazy';
echo json_encode($data);
echo 'crazy';

只输出一个"疯狂"对我来说。我也尝试过:

echo json_last_error_msg();
echo json_last_error();
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);

但他们都没有给我任何结果,甚至没有给我任何结果......

我完全不知道那里发生了什么,如果你能帮助我,我真的很感激!!!

另外:我的Ubuntu Server的PHP版本是5.5.3,我正在使用SLIM框架,idiorm。(虽然我不认为它是相关的...)

2 个答案:

答案 0 :(得分:1)

尝试检查服务器上是否实际可用json_encode。我知道它应该默认存在,但我遇到了一些无法使用该功能的服务器。

if (function_exists('json_encode')) {
    echo 'Yes';
} else {
    echo 'No';
}

答案 1 :(得分:0)

您刚刚使用json使用json_encode代替

$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr); // Here!
echo json_last_error_msg();
echo json_last_error();