2015-06-18 37 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