【发布时间】:2017-11-04 11:06:18
【问题描述】:
我正在尝试将项目的 REST API 迁移到 Amazon AWS。我安装了 PHP 7.0 并在 EC2 实例上工作。但是,我似乎根本无法让我的 API 路由正常工作。原始版本使用 Rest.inc.php 和 .htaccess 文件。我已经在其他几台服务器上进行了设置,没有任何问题,但无法在 Amazon AWS 下运行。
我想知道问题出在哪里。我只是在 API 调用上收到一个未找到的错误。这可能与安全/签名问题有关,还是我应该在 AWS 上使用完全不同的方法?
我使用的代码与您搜索的任何地方似乎都会弹出的示例非常相似。
<?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 文件:
<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>
【问题讨论】:
标签: php .htaccess rest amazon-web-services amazon-ec2