2015-03-24 51 views
0

Restler 3.0.0rc6。Restler在部署到測試服務器後找不到任何路由

我在本地開發環境中的Restler中設置了一個簡單的REST服務。當我移動到測試服務器時,Restler找不到任何路由。

我有項目通過遠程主機與git同步。我剛剛將最新的本地更改提交到測試服務器,因此文件夾設置應該沒問題。

錯誤在Routes.php行362在方法find誰試圖找到匹配請求的url的API方法。在該文件中的指令:

$p = Util::nestedValue(static::$routes, "v$version"); 

回報$p = NULL。在通話帕拉姆值:

static::$routes is an empty array - array(). 
$version is int(1) 

此代碼後一個條件觸發如果$p = NULL異常。

我已經嘗試了mininum Hello世界的例子,並總是得到同樣的問題。

由於該應用在我的本地服務器上正常工作,我可以考慮在我的測試服務器中配置了一些配置,但它無法跟蹤它是什麼。由於我不知道從哪裏開始,我只是提供一些信息以防萬一。

我包括我的文件夾配置:

html/api/ -> index.php and custom class files 
html/api/data-base -> database acces files 
html/api/vendor -> Restler 

我的index.php文件

<?php 
require_once 'vendor/restler.php'; 
require_once('data-base/data-base-pdo.php'); 
use Luracast\Restler\Restler; 
$r = new Restler(); 
$r->addAPIClass('Individuals'); 
$r->addAPIClass('Injuries'); 
$r->addAPIClass('Measurements'); 
$r->addAPIClass('Sessions'); 
$r->addAPIClass('Reports'); 
$r->handle(); 

我的一個類文件:

<?php 
use Luracast\Restler\RestException; 
class Individuals 
{ 
    public $db; 
    public function __construct() { 
     $this->db = DataBase::getInstance(); 
    } 

    public function index() { 
     return $this->db->individualsSelect(); 
    } 

    public function get($id) { 
     try { 
      return $this->db->individualsSelectOne($id); 
     } catch(mysqli_exception $e) { 
      throw new RestException(500, $e->getMessage(), array(), $e); 
     } catch(InvalidArgumentException $e) { 
      throw new RestException(400, $e->getMessage(), array(), $e); 
     } 
    } 

    public function put($id, $request_data) { 
     try { 
      return $this->db->individualsUpdate($id, $request_data); 
     } catch(mysqli_exception $e) { 
      throw new RestException(500, $e->getMessage(), array(), $e); 
     } catch(InvalidArgumentException $e) { 
      throw new RestException(400, $e->getMessage(), array(), $e); 
     }  
    } 

    /** 
    * @url GET {individuals_id}/injuries 
    */ 
    public function injuries($individuals_id) { 
     try { 
      return $this->db->injuriesSelectByIndividual($individuals_id); 
     } catch(mysqli_exception $e) { 
      throw new RestException(500, $e->getMessage(), array(), $e); 
     } catch(InvalidArgumentException $e) { 
      throw new RestException(400, $e->getMessage(), array(), $e); 
     } 
    } 

    /** 
    * @url GET {individuals_id}/measurements 
    */ 
    public function measurements($individuals_id) { 
     try { 
      return $this->db->measurementsSelectByIndividual($individuals_id); 
     } catch(mysqli_exception $e) { 
      throw new RestException(500, $e->getMessage(), array(), $e); 
     } catch(InvalidArgumentException $e) { 
      throw new RestException(400, $e->getMessage(), array(), $e); 
     } 
    } 

    /** 
    * @url GET {individuals_id}/sessions 
    */ 
    public function sessions($individuals_id) { 
     try { 
      return $this->db->sessionsSelectByIndividual($individuals_id); 
     } catch(mysqli_exception $e) { 
      throw new RestException(500, $e->getMessage(), array(), $e); 
     } catch(InvalidArgumentException $e) { 
      throw new RestException(400, $e->getMessage(), array(), $e); 
     } 
    } 
} 

回答

0

的問題是在文件的情況下名稱和類名稱。我的所有文章都以大寫字母開頭,如Individuals,但文件全部小寫,如individuals.php。我的開發環境不區分大小寫,所以restler可以找到我的分支的文件,但是一旦我部署在我的測試服務器中,一切都會中斷。

相關問題