Страница 1 из 1

Ошибка подключаемых файлов

Добавлено: 18 янв 2017, 11:48
Владимир Гунаев
Проблема в следующем, есть такой код при переходе по ссылке выдаёт ошибку


Warning: require(Main.php) [function.require]: failed to open stream: No such file or directory in E:\OpenServer\domains\php.loc\oop\controllers\Page.php on line 13

Fatal error: require() [function.require]: Failed opening required 'Main.php' (include_path='.;e:/openserver/modules/php/PHP-5.3;e:/openserver/modules/php/PHP-5.3/PEAR/pear') in E:\OpenServer\domains\php.loc\oop\controllers\Page.php on line 13

Структура папок:

[img]
folders.jpg
[/img]



Код php
class Page extends DataBase
{
public function getPage()
{
if(isset($_GET['page']))
{
$pagelink = $_GET['page'];

require 'views/'.$pagelink.'.php';
}
else
{
require 'views/index.php';
}
}

}

Re: Ошибка подключаемых файлов

Добавлено: 18 янв 2017, 12:04
Asmodey
1. Добавьте __DIR__, чтоб оно отступало от текущего файла.
2. $_GET['page'] надо очень тщательно фильтровать, а то можно уехать далеко по файловой системе.

Re: Ошибка подключаемых файлов

Добавлено: 18 янв 2017, 12:35
Владимир Гунаев
Ещё получается так, что я переношу фаил из папки /views/ в корень этот сайта тоесть /oop/ тут нечего не меняю
require 'views/'.$pagelink.'.php'; и он начинает работать, тоесть видет фаил.

Re: Ошибка подключаемых файлов

Добавлено: 18 янв 2017, 12:46
Владимир Гунаев
Пробовал вот так всё равно ошибка таже.
require __DIR__ .'/views/'.$pagelink.'.php';
require __DIR__ .'/../views/'.$pagelink.'.php';
require __DIR__ .'../'.$pagelink.'.php';

Re: Ошибка подключаемых файлов

Добавлено: 18 янв 2017, 12:48
Asmodey
Значение $pagelink в студию!
А заодно и __DIR__.'../views/'.$pagelink.'.php'

Re: Ошибка подключаемых файлов

Добавлено: 18 янв 2017, 13:16
Владимир Гунаев
Содержимое страницы index.php

<?php
require 'models/DataBase.php';
require 'controllers/Page.php';

$database = new DataBase();
$page = new Page();
$page->getPage();
?>


<div class="main"><a href="?page=Main">Main</a></div>
<div class="main"><a href="?page=input">Contact</a></div>
<div class="main"><a href="?page=contact">a but</a></div>

-------------------

Содержимое страницы Page.php

class Page extends DataBase
{
public function getPage()
{
if(isset($_GET['page']))
{
$pagelink = $_GET['page'];

require __DIR__ .'/views/'.$pagelink.'.php';
}
else
{
require 'views/index.php';
}
}

}

Re: Ошибка подключаемых файлов

Добавлено: 18 янв 2017, 13:20
Владимир Гунаев
Условие else require 'views/index.php'; работает нормально!

Re: Ошибка подключаемых файлов

Добавлено: 18 янв 2017, 13:36
Владимир Гунаев
folders.jpg

Re: Ошибка подключаемых файлов

Добавлено: 18 янв 2017, 14:35
Владимир Гунаев
Заработало!!! удалил из папки фаил Page.php и сделал такую запись require '/views/'.$pagelink.'.php'; стало всё работать .