用PHP看不到application / json输出的结果

时间:2016-07-11 15:22:45

标签: php json nginx

我正在PHP中构建一个非常简单的API,以application/json格式从我的数据库中提供数据。

这是我的muscular-groups.php文件:

<?php

include '../inc/db.php';

if (isset($_GET['id'])) {
    $req = $pdo->prepare('SELECT * FROM muscular_groups WHERE id = ?');
    $req->execute([$_GET['id']]);
    $res = $req->fetchAll();
}
else {
    $req = $pdo->prepare('SELECT * FROM muscular_groups');
    $req->execute();
    $res = $req->fetchAll();
}

header('Content-Type: application/json');
echo json_encode($res);

问题是在本地所有工作都很好,如下所示: enter image description here

但是当我想在我的服务器上访问它时(www.example.com/api/muscular-groups),我有一个白屏,没有任何错误消息或错误日志。

奇怪的是:如果我将header('Content-Type: application/json');echo json_encode($res);替换为var_dump($res)中的muscular-groups.php,它会显示在屏幕上。

P.S。:很奇怪,我的服务器上只有一个端点可以工作(例如:www.example.com/api/offers)并显示一个json输出,这里是代码:

<?php

include '../inc/db.php';

$req = $pdo->prepare('SELECT * FROM offers');
$req->execute();
$res = $req->fetchAll();

header('Content-Type: application/json');
echo json_encode($res);

我迷路了......

1 个答案:

答案 0 :(得分:0)

我终于得到了它:问题是有UTF-8字符,并且PDO没有配置为按原样提供它们。所以$pdo->exec("SET NAMES 'utf8'");救了我的命!