2015-06-18 34 views
0

我想建立一个JSON输出API,第二个功能是产生所需的输出,但我不能从网络调用它。而第一个函数按预期返回大量文本。我是否在使用不兼容的东西?我在Ubuntu 14.04服务器上使用PHP 5.5.9版本。PHP功能不可浏览

我可以在终端和浏览器中查看这个函数的结果;

<?php 
class ArticlesAPI { 
     function top() { 
       $db = new mysqli("mysql-host.rds.amazonaws.com", "user", "password", "db_name"); 
       $results = $db->query("SELECT article_id, title, summary FROM top_articles"); 

     while ($row = $results->fetch_assoc()) { 
      echo $row['article_id']; 
      echo $row['title']; 
      echo $row['summary']; 
     } 
     $results->close(); 
    } 
} 
$api = new ArticlesAPI; 
$api->top(); 
?> 

该函数只返回终端中的结果;

<?php 
class ArticleAPI { 
     function top() { 
       $db = new mysqli("mysql-host.rds.amazonaws.com", "user", "password", "db_name"); 
       $results = $db->query("SELECT article_id, title, summary FROM top_articles"); 

       $articles = array(); 
       while($article = $results->fetch_assoc()){ 
         $article_id = $article['article_id']; 
         $articles[$article_id][] = $article['title']; 
         $articles[$article_id][] = $article['summary']; 

       } 
       $results->close(); 
       $db->close(); 
       $json = json_encode($articles); 
       echo $json; 
     } 
} 
$api = new ArticleAPI; 
$api->top(); 
?> 
+0

在网络上运行时,从第一个块输出什么样的文本? (请记住,在发布之前从输出中删除任何实时数据) –

+0

http://ec2-54-152-162-157.compute-1.amazonaws.com/mysql_test.php这是目前的随机数据而非实时数据。 – Rhys

+0

什么是真正的地狱? –

回答

2
  1. 有CLI的2个独立的配置文件和网上办理登机手续和检查服务器配置(如HTTP服务器解析PHP文件等),你可以做一些简单的<?php echo 'hello world';,看看输出是否正确。如果你通过浏览器打开它,并且你看到的不仅仅是hello world,那么PHP解析器不会被启用。
  2. 另外,当您输出JSON时,您应该为浏览器设置适当的标头application/json
  3. 检查您的输出缓冲设置。也许你使用ob_ *函数,并且不会将输出刷新到browswer
  4. 试着把exit放在echo后面并检查脚本之后。
  5. 在您的应用的第一行设置error_reporting(E_ALL);ini_set('display_errors', 1);以检查是否有错误。
+0

http://ec2-54-152-162-157.compute-1.amazonaws.com/echo_test.php这是否建议PHP设置正确。我添加了标题('Content-Type:application/json');在json_encode之前,我添加了exit;回声后。一切都无济于事,我现在将调查你的第三点。谢谢 – Rhys

+0

是的,至少它是由PHP解析器解析的。现在尝试'<?php header('Content-type:application/json'; echo json_encode(array('test'=>'works''));' – Robert

+0

<?php header('Content-type:application/json'); echo json_encode(array('test'=>'it works';)); ?>(保存到echo_test.php,它不产生输出) – Rhys