[英]Fatal error: require(): Failed opening required
我正在尝试使用 PHP 创建一个 MVC 路由器,用于学习目的。
但是,我无法加载我想要访问的视图。 例如,我将尝试访问 homestead.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
这是我的 public/index.php 上的第 8 行:
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”。
这是路由器 object:
<?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.');
}
}
这是请求 object:
<?php
class Request
{
public static function uri()
{
return trim($_SERVER['REQUEST_URI'], '/');
}
}
public/index.php 中需要这两个对象。
为什么我会收到此错误?
该错误表明/home/vagrant/projects/blog/public/controllers/about.php
不存在。
您要么必须在路由文件中指定正确的关系路径或绝对路径(或者您require
指定文件的位置)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.