Wamp Server -- 无法执行任何 PHP Rest API


Wamp Server -- Cannot execute any PHP Rest API

我在Windows 64x上有Wamp Server 2.5和Apache 2.4.9。我在 c:''wamp''www''tridrops 文件夹下使用 Slim REST API 项目创建了一个 PHP。我有我的索引.php,我正在尝试在 c:''wamp''www''tridrops''tridrops''ver''index.php 执行。

我的PHP代码:

<?php
use Slim'Slim;
require_once '../include/DbHandler.php';
require_once '../libs/Slim-2.x/Slim/Slim.php';
'Slim'Slim::registerAutoloader();
$app = new Slim();
$app->run();
/***
 * Creating NEW CATEGORY in db  
 * method POST
 * params - category_name, category_description
 * url - /categories/
 */
$app->post('/categories', function() use ($app) {
// Check for required params
verifyRequiredParams(array('name', 'desc'));
$response = array();
// Reading post parameters
$category_name = $app->request()->post('name');
$category_description = $app->request()->post('desc');
$db = new DbHandler();
// Creating new Category
$categoryId = $db->createCategory($category_name, $category_description);
if ($categoryId != NULL) {
    $response["error"] = false;
    $response["message"] = "Category Created Successfully with Category ";
    $response["categoryId"] = $categoryId;
} else {
    $response["error"] = true;
    $response["message"] = "Failed to create Category. Please try again.";
}
echoRespnse(201, $response);
});
/**
 * Getting List of Categories
 * method GET
 * url /categories
 */
$app->get('/categories', function() {
$response = array();
$db = new DbHandler();
// fetching all categories
$result = $db->getAllCategories();
$response["error"] = false;
$response["categories"] = array();
// looping through results
while ($categories = $result->fetch_assoc()) {
    $tmp = array();
    $tmp["categoryId"] = $categories["categoryId"];
    $tmp["category_name"] = $categories["category_name"];
    $tmp["categoy_isparent"] = $categories["categoy_isparent"];
    $tmp["category_description"] = $categories["category_description"];
    array_push($response["categories"], $tmp);
}
echoRespnse(200, $response);
});
?>

数据库处理程序.PHP文件

<?php
// DbHandler.php
/**
 * Class to handle DB operations
 * CRUD methods for database
 */
class DbHandler {
    private $conn;
function __construct() {
    require_once dirname(__FILE__) . './DbConnect.php';
    // Opening db connection
    $db = new DbConnect();
    $this->conn = $db->connect();               
}
/*------------------ category table methods ------------ */
/**
 * Creating new Category
 * @param String $category_name
 * @param String $category_description
 * @param boolean $category_isparent
 */
public function createCategory($category_name, $category_description) {
    $response = array();
    // First ccheck if category already exists
    if (! $this->isCategoryExists($category_name)) {
        // insert stmt
        $stmt = $this->conn->prepare("INSERT INTO category(category_name, category_description) values(?, ?)");
        $stmt->bind_param("ssss", $category_name, $category_description);
        $result = $stmt->execute();
        $stmt->close();
        // Check for successful insertion
        if ($result) {
            // Category Created Successfully
            return SUCCESSFUL;
        } else {
            // fAILED TO INSERT
            return FAILED;
        }           
    } else {
        // Same Category Exists
        return EXISTS;
    }
    return $response;
}
/**
 * Fetch all Categories
 */
public function getAllCategories() {
    $stmt = $this->conn->prepare("SELECT * FROM category");
    $stmt->execute();
    $cats = $stmt->get_result();
    $stmt.close();
    return $cats;
}

.htaccess

# tridrops/ver/.htaccess
RewriteEngine On 

# Always set these headers.
#Header always set Access-Control-Allow-Origin "*"
#Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
#Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

我试图在Google Advanced REST Client中执行POSTGET categories,但我不断得到404。

响应:

<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /tridrops/tridrops/ver/categories/ was not found on this server.</p>
<hr>
<address>Apache/2.4.9 (Win64) PHP/5.5.12 Server at localhost Port 81</address>
</body>

知道为什么我只收到此错误。
Wamp 在端口 81 上运行。我可以很好地执行phpadmin。为什么这会引起问题,几天来都想不通。

你能帮我解决这个错误吗?

任何帮助都非常感谢。

多谢。

看起来问题可能是重写问题。我看到您的重写规则在您的 htaccess 文件中被注释掉了。你想把每个都路由到索引.php对吧?

您可能可以通过访问来测试这是问题所在...索引.php/类别,并且该页面应加载。

编辑:试试这个htaccess文件。

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

正如@Steve Parish所说,看起来您没有设置/启用URL重写设置。虽然史蒂夫正在帮助您使重写正常工作,但我还建议您检查重写工作所需的模块是否已启用。尝试此处的答案以检查是否启用了mod_rewrite:如何检查 php 中是否启用了mod_rewrite?

如果不是,你的.htaccess基本上会被忽略。最好在对抗应该有效的 htaccess 语法之前检查一下。希望对您有所帮助!