Witam,
Postanowiłem nauczyć się pisać strony w modelu mvc, lecz podczas nauki napotkałem na problem, a mianowicie pojawił się on po przeniesieniu plików na serwer, ponieważ na lokalnym komputerze wszystko ładnie działa. Problem pojawia się w momencie próby dołączenia plików widoku za pomocą require_once, domyślam się, że problem znajduje się w ścieżce wskazującej plik do załączenia, lecz pierw przedstawię moją strukturę:
Pliki znajdują się w głównym folderze public_html:
Folder /View
Folder /View/Index
Oraz pliki /Libs
Cały adres przekierowywany jest do zmiennej $url z którego filtruje sobie kontroler i model i na podstawie tych danych załączam odpowiednie pliki.
Plik .htaccess:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)?$ index.php?url=$1 [QSA,L]
Oraz plik /libs/router.php odpowiadający za filtrowanie i dołączanie odpowiednich plików:
class Router
{
function __construct()
{
$this -> request = $_GET['url'];
$this -> request = rtrim($this -> request, "/");
$this -> params = explode("/", $this -> request);
$this -> controller = $this -> params[0];
if($this -> controller == "index.php" OR empty($this -> controller)) $this -> controller = "Index";
$this -> controller = ucfirst($this -> controller);
$file = 'controllers/'.$this -> controller.'.php';
if(file_exists($file))
{
require_once $file;
$this -> control = new $this -> controller($this -> params);
}
else
{
header("Location: /");
}
}
}
Plik /libs/view.php
class View
{
function __construct(){}
function Render()
{
require_once $_SERVER['DOCUMENT_ROOT'].'/view/header.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/view/'.$this -> controller.'/'.$this -> page.'.php';
}
}
I tutaj pojawia się problem, ponieważ plik /view/header.php dołączany jest bez problemu oraz wszystkie pliki znajdujące się w tym folderze, natomiast jeśli chcę dodać coś z katalogu poziom niżej np, /view/index/home.php wyskakuje błąd:
Warning: require_once(/home/user_name/domains/domain_name.pl/public_html/view/Index/Home.php) [function.require-once]: failed to open stream: No such file or directory in /home/user_name/domains/domain_name/public_html/libs/View.php on line 10
Fatal error: require_once() [function.require]: Failed opening required '/home/user_name/domains/domain_name.pl/public_html/view/Index/Home.php' (include_path='.:/usr/local/php53/lib/php/') in /home/user_name/domains/domain_name.pl/public_html/libs/View.php on line 10
Czy mogę liczyć na waszą pomoc i wskazanie możliwego rozwiązania, bądź w którym miejscu znajduje się błąd i jak można go naprawić.
Pozdrawiam ;)