Неустранимая ошибка: require (): сбой открытия обязателен - PullRequest
0 голосов
/ 16 апреля 2020

enter image description here Я пытаюсь создать MVC маршрутизатор с PHP для учебных целей.

Однако я не могу загрузить вид, который хочу посетить. Например, я попытаюсь посетить hometead.blog/about, и будет возвращено:

Fatal error: require(): Failed opening required 'controllers/about.php' (include_path='.:/usr/share/php') in /home/vagrant/projects/blog/public/index.php on line 8 

Это строка 8 в моем public / index. php:

require Router::load('../routes.php')
    ->direct(Request::uri());

Это файл маршрутов:

<?php

$router->define([
    '' => 'public/index.php',
    'about' => 'controllers/about.php',
    'blog' => 'controllers/blog.php',
    'contact' => 'controllers/contact.php'
]);

Эти маршруты определенно точны. Конечная точка 'about' определенно принадлежит 'controllers / about. php'.

Вот объект маршрутизатора:

<?php

class Router
{
    protected $routes = [];

    public static function load($file)
    {
        $router = new static;

        require $file;

        return $router;
    }

    public function define($routes)
    {
        $this->routes = $routes;
    }

    public function direct($uri)
    {
        if (array_key_exists($uri, $this->routes)) {
            return $this->routes[$uri];
        }

        throw new Exception('No route defined for this URI.');
    }
}

А вот объект запроса:

<?php

class Request
{
    public static function uri()
    {
        return trim($_SERVER['REQUEST_URI'], '/');
    }
}

Оба объекта требуются в public / index. php.

Почему я получаю эту ошибку?

1 Ответ

0 голосов
/ 16 апреля 2020

Ошибка утверждает, что /home/vagrant/projects/blog/public/controllers/about.php не существует.

Вы должны либо указать правильные реляционные или абсолютные пути в вашем файле маршрута (или там, где вы require указали файл).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...