Получение страницы 404 не найдено при доступе к моему файлу index.php - PullRequest
0 голосов
/ 26 декабря 2018

Я работал над приложением для Android, теперь я хочу иметь базу данных на сервере, откуда мое приложение будет получать данные.

Я нашел создание REST API с PHP для доступа к базе данных MySQLЭто самое простое решение, но я совершенно чужды php (при касании его в первый раз).

Я получаю "404 Страница не найдена", когда я пытаюсь нажать - http://localhost/oneview_alerts/v1/notifications

Мой WAMP-сервер запущен и работает.

Мой код очень маленький и простой, и я сослался на следующие URL-адреса, чтобы получить помощь: 1) https://www.androidhive.info/2014/01/how-to-create-rest-api-for-android-app-using-php-slim-and-mysql-day-12-2/

2) https://www.androidhive.info/2014/01/how-to-create-rest-api-for-android-app-using-php-slim-and-mysql-day-23/

Я абсолютно новичок в PHP и не могу понять, с чего начать отладку.Это не похоже на мой Java или Python, где я мог сразу увидеть журналы ошибок в logcat или отладчике.Или, может быть, есть способ, я просто не знаю об этом.

Пожалуйста, помогите !!

В моем файле access.log я получаю "127.0.0.1 - - [26 / Dec/ 2018: 19: 15: 59 +0000] "GET / oneview_alerts / v1 / уведомления HTTP / 1.1" 404 532 "

index.php

<?php
/**
 * Created by PhpStorm.
 * User: JM00490784
 * Date: 12/26/2018
 * Time: 6:05 PM
 */

ini_set('display_errors', 'On');
error_reporting(E_ALL);

require_once '../include/DbHandler.php';
require '.././libs/Slim/Slim.php';

\Slim\Slim::registerAutoloader();

$app = new \Slim\Slim();

function echoResponse($status_code, $response) {
    $app = \Slim\Slim::getInstance();
    // Http response code
    $app->status($status_code);

    // setting response content type to json
    $app->contentType('application/json');

    echo json_encode($response);
}

$app->run();

$app->get('/notifications', function() {

    $response = array();
    $db = new DbHandler();

    // fetching all user tasks
    $result = $db->getAllNotifications();

    $response["error"] = false;
    $response["notifications"] = array();

    // looping through result and preparing tasks array
    while ($notification = $result->fetch_assoc()) {
        $tmp = array();
        $tmp["id"] = $notification["id"];
        $tmp["notification_text"] = $notification["notification_text"];
        $tmp["hostname"] = $notification["hostname"];
        $tmp["service"] = $notification["service"];
        $tmp["value"] = $notification["value"];
        $tmp["timestamp"] = $notification["timestamp"];
        array_push($response["notifications"], $tmp);
    }

    echoResponse(200, $response);
});

?>

DBHandler.php

<?php

/**
 * Class to handle db operations
 * This class will have CRUD methods for database tables
 *
 * @author Jotinder Singh Matta
 */
class DbHandler {

    private $conn;

    function __construct() {
        require_once dirname(__FILE__) . './DbConnect.php';
        // opening db connection
        $db = new DbConnect();
        $this->conn = $db->connect();
    }

    public function getAllNotifications() {
        $stmt = $this->conn->prepare("SELECT * FROM notification ORDER BY timestamp DESC");
        $stmt->execute();
        $notifications = $stmt->get_result();
        $stmt->close();
        return $notifications;
    }


}

?>

DBConnect.php

<?php

/**
 * Handling database connection
 *
 * @author Jotinder Singh Matta
 */
class DbConnect {

    private $conn;

    function __construct() {
    }

    /**
     * Establishing database connection
     * @return database connection handler
     */
    function connect() {
        include_once dirname(__FILE__) . './Config.php';

        // Connecting to mysql database
        $this->conn = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

        // Check for database connection error
        if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }

        // returing connection resource
        return $this->conn;
    }

}

?>

Config.php

<?php
/**
 * Database configuration
 */
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
define('DB_NAME', 'oneview_alerts');

?>

.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L] 

таблица уведомлений

desc notification



id  int(11) NO  PRI 
    NULL
    auto_increment  
notification_text   varchar(250)    YES     
    NULL

hostname    varchar(255)    NO      
    NULL

service varchar(255)    NO      
    NULL

value   varchar(255)    NO      
    NULL

timestamp   timestamp   YES     CURRENT_TIMESTAMP       

1 Ответ

0 голосов
/ 26 декабря 2018

Из ваших комментариев я предполагаю, что корнем вашего документа является E:\wamp64\www\oneview_alerts\v1\, и на том же уровне, что и index.php

существует файл .htaccess. Замените содержимое файла .htaccess этим.

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

Затем создайте файл vhost

<VirtualHost *:80>
DocumentRoot "E:/wamp64/www/oneview_alerts/v1/"
ServerName oneview_alerts.local
<Directory "E:/wamp64/www/oneview_alerts/v1/">
</Directory>
</VirtualHost>

Добавьте следующее в файл hosts

127.0.0.1 localhost oneview_alerts.local

Затем перезапустите сервер WAMP

...