2017-06-03 11 views
0

Ich versuche, meine REST-APIs für ein Projekt auf Amazon AWS zu migrieren. Ich habe PHP 7.0 installiert und arbeite an einer EC2-Instanz. Allerdings kann ich mein API-Routing überhaupt nicht funktionieren lassen. Die ursprüngliche Version verwendet Rest.inc.php und .htaccess-Datei. Ich habe dies auf mehreren anderen Servern problemlos eingerichtet, kann aber nicht unter Amazon AWS arbeiten.Mit Amazon EC2 kann ich Rest.inc.php (REST API) noch verwenden oder gibt es einen anderen Ansatz?

Was ich frage mich ist, wo das Problem liegt. Ich bekomme nur einen nicht gefundenen Fehler bei den API-Aufrufen. Liegt dies wahrscheinlich an Sicherheits-/Signaturproblemen oder sollte ich einen völlig anderen Ansatz für AWS verwenden?

Der Code, den ich benutze, ist dem Beispiel sehr ähnlich, das scheint überall Popup überall Sie suchen.

<?php 

    require_once("Rest.inc.php"); 

    class API extends REST { 

     public $data = ""; 

     const DB_USER  = "username"; 
     const DB_PASSWORD = "password"; 

     private $db = NULL; 

     public function __construct(){ 
      parent::__construct(); 
      $this->dbConnect(); 
     } 

     private function dbConnect(){ 
      try { 
       $this->db = new PDO("mysql:host=myAWShost;dbname=database", self::DB_USER, self::DB_PASSWORD); 
       $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      } 
      catch(PDOException $e) { 
       echo "Connection failed: " . $e->getMessage(); 
      } 
     } 

     public function processApi(){ 

      $func = strtolower(trim(str_replace("/","",$_REQUEST['rquest']))); 

      if((int)method_exists($this,$func) > 0) { 
       $this->$func(); 
      } else { 
       $this->response('',404); 
      } 

     } 

     private function activity(){ 
      ... 
     } 

     private function appointment(){ 
      ... 
     } 

     private function client(){ 
      ... 
     } 

     private function facility(){ 
      ... 
     } 

     private function person(){ 
      ... 
     } 

     private function personLocation(){ 
      ...   
     } 
    } 

    // Initiiate Library 

    $api = new API; 
    $api->processApi(); 

?> 

.htaccess-Datei:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-s 
    RewriteRule ^(.*)$ api.php?rquest=$1 [QSA,NC,L] 

    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule ^(.*)$ api.php [QSA,NC,L] 

    RewriteCond %{REQUEST_FILENAME} -s 
    RewriteRule ^(.*)$ api.php [QSA,NC,L] 
</IfModule> 

Antwort

1

Für Apache die .htaccess Datei, die Sie benötigen, um sicherzustellen zu lesen, dass AllowOverride All in Ihrer Apache-Konfigurationsdatei festgelegt ist, und dann starten Sie Apache mit sudo service httpd restart.

Beispiel:

<Directory "/var/www/html"> 
AllowOverride None 
</Directory> 

Becomes:

<Directory "/var/www/html"> 
AllowOverride All 
</Directory> 
+0

, die den Trick tat! Vielen Dank. Du hast meinen Tag gerettet. – Lastmboy

Verwandte Themen