2014-04-12 27 views
0

我陷入了PHP中的json_encode()问题。

下面的简单函数试图将响应数据发送到API调用。json_encode返回null和下面的块代码

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服务器的PHP版本是5.5.3,我使用SLIM架构,idiorm(虽然我不认为这是有关...)

+1

您是否已经验证安装的JSON?我相信它应该列在'<?php phpinfo(); ?>'或'php -i' – Brett

+0

'json_encode'只返回'string'或'false'。据我所知,它不会返回null。请打开*全部*错误报告(在脚本的顶部放置'error_reporting(-1);')并再次尝试。 –

+1

显然,你的ubuntu服务器上有php 5.5。由于许可问题,PHP5.5在框中没有JSON。 – AxelPAL

回答

1

尝试,如果json_encode是您的服务器上实际可用。我知道它应该在默认情况下,但我遇到了一些服务器,该功能不可用。

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

哦!这正是发生的事情......你救了我的命,谢谢! – yeelan

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(); 
+0

对不起,这是一个错字......我在代码中正确使用它:) – yeelan