2016-07-11 2 views
0

PHP에서 데이터베이스에 application/json 형식의 데이터를 제공하는 간단한 API를 작성하고 있습니다.PHP로 application/json 결과를 볼 수 없습니다

<?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); 

문제는 당신이 아래에 볼 수있는 지역에서 모두 잘 작동한다는 것입니다 : 여기

muscular-groups.php 파일입니다 enter image description here

을하지만 (에서 내 서버에 액세스하려고 할 때 www.example.com/api/muscular-groups), 오류 메시지 나 오류 로그가없는 흰색 화면이 있습니다.

이상한 점 : header('Content-Type: application/json');echo json_encode($res);var_dump($res)으로 바꾸면 화면에 나타납니다.

추신 : 아주 이상한, 내 엔드 포인트의 하나 (예 : 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); 

...

+0

첫 번째 질문 : 작동하지 않는 서버에서 실행중인 PHP 버전은 무엇입니까? – RiggsFolly

+0

제안 : 파일 상단의 [오류보고] (http://stackoverflow.com/questions/845021/how-to-get-useful-error-messages-in-php/845025#845025)를 상단에 추가하십시오.) _ _ 시작하는 PHP 태그 바로 다음에 작동하지 않는 서버에서 실행 중일 때 ' RiggsFolly

+0

@RiggsFolly 내 PHP 버전은 5.6.17-0 + deb8u1입니다. 이미 시도했지만 아무 것도 나타나지 않습니다. 또한 내 php-fpm php.ini 파일에서 이미 활성화 된 것 같습니다. –

답변

0

마침내 알게되었습니다. 문제는 UTF-8 문자가 있었고 PDO가 그대로 제공되도록 구성되지 않았기 때문입니다. 그래서 $pdo->exec("SET NAMES 'utf8'"); 내 생명을 구했어!

관련 문제