Как описать два сценария для страницы?

12
G
На сайте с 24.11.2010
Offline
63
1016

Как можно описать для одной страницы два сценария?

Проблема в том, что при переходе на главную страницу браузер не может найти файл right-menu.php

Warning: require_once(../view/right-menu.php): failed to open stream: No such file or directory in E:\OpenServer\OpenServer\domains\myblog2.ru\view\sidebar.php on line 13

Fatal error: require_once(): Failed opening required '../view/right-menu.php' (include_path='.;e:/openserver/openserver/modules/php/PHP-5.6;e:/openserver/openserver/modules/php/PHP-5.6/PEAR/pear') in E:\OpenServer\OpenServer\domains\myblog2.ru\view\sidebar.php on line 13

В sidebar.php прописано так:

<?php require_once '../view/right-menu.php';?> . Если убираю "..", то на главной странице все корректно отображается, но тогда на странице articles.php появляется таже самая ошибка: Warning: require_once(view/right-menu.php): failed to open stream: No such file or directory in E:\OpenServer\OpenServer\domains\myblog2.ru\view\sidebar.php on line 13

Fatal error: require_once(): Failed opening required 'view/right-menu.php' (include_path='.;e:/openserver/openserver/modules/php/PHP-5.6;e:/openserver/openserver/modules/php/PHP-5.6/PEAR/pear') in E:\OpenServer\OpenServer\domains\myblog2.ru\view\sidebar.php on line 13

Я так понимаю, нужно на странице index.php прописать два сценария. Но не совсем понимаю как браузеру это объяснить.

NothingMatters
На сайте с 12.06.2017
Offline
45
#1

Нужно использовать нормальные шаблонизаторы. Возвращаться в 2000г и пилить шаблоны на инклудах это странно.

А по делу:

использовать абсолютный путь, а не относительный.

Сделать константу VIEW_PATH с полным путем до папки view, и инклудить

include VIEW_PATH . '/right-menu.php';
G
На сайте с 24.11.2010
Offline
63
#2
NothingMatters:
Нужно использовать нормальные шаблонизаторы. Возвращаться в 2000г и пилить шаблоны на инклудах это странно.

А по делу:
использовать абсолютный путь, а не относительный.
Сделать константу VIEW_PATH с полным путем до папки view, и инклудить
include VIEW_PATH . '/right-menu.php';

Спасибо за наводку. Но, к сожалению, это не помогло.

Прописал в отдельном файле контанту define('VIEW','view/');, прописал в sidebar.php так

<?php  include VIEW . 'right-menu.php';?>
- по прежнему таже ошибка:

Warning: include(viewright-menu.php): failed to open stream: No such file or directory in E:\OpenServer\OpenServer\domains\myblog2.ru\view\sidebar.php on line 13

Warning: include(): Failed opening 'viewright-menu.php' for inclusion (include_path='.;e:/openserver/openserver/modules/php/PHP-5.6;e:/openserver/openserver/modules/php/PHP-5.6/PEAR/pear') in E:\OpenServer\OpenServer\domains\myblog2.ru\view\sidebar.php on line 13

bay_ebook
На сайте с 28.05.2010
Offline
111
#3
Grep:
Спасибо за наводку. Но, к сожалению, это не помогло.

ну тут нужно еще почитать что такое относительный и абсолютный путь к папке/файлу :) тогда поможет.

Нужен прогер на php+mysql+понимание чужего кода? (/ru/forum/540660) Вам сюда PHP-шаман (http://php-shaman.pw/)
SI
На сайте с 03.12.2007
Offline
130
#4

>> Warning: include(viewright-menu.php): failed to open stream: No such file

Слеш после view потерялся

-= Онлайн сервисы =-
NothingMatters
На сайте с 12.06.2017
Offline
45
#5
Grep:
Спасибо за наводку. Но, к сожалению, это не помогло.
Прописал в отдельном файле контанту define('VIEW','view/');, прописал в sidebar.php так
<?php  include VIEW . 'right-menu.php';?>
- по прежнему таже ошибка:
Warning: include(viewright-menu.php): failed to open stream: No such file or directory in E:\OpenServer\OpenServer\domains\myblog2.ru\view\sidebar.php on line 13

Warning: include(): Failed opening 'viewright-menu.php' for inclusion (include_path='.;e:/openserver/openserver/modules/php/PHP-5.6;e:/openserver/openserver/modules/php/PHP-5.6/PEAR/pear') in E:\OpenServer\OpenServer\domains\myblog2.ru\view\sidebar.php on line 13

Я же не просто так написал про абсолютный путь. Пропишите абсолютный путь к папке view(абсолютный = полный путь от корня диска)

G
На сайте с 24.11.2010
Offline
63
#6
bay_ebook:
ну тут нужно еще почитать что такое относительный и абсолютный путь к папке/файлу :) тогда поможет.

Это я понимаю. Правильный ведь путь указан. Если разбирать, то выходит следующие:

основная папка-->view-->right-menu.php.

выходит так: <?php include VIEW . '../right-menu.php';?> . Какой-то парадокс, но просто удалил все содержимое с файла right-menu, сохранил, вставил еще раз прежний код - и все заработало. Странный, но приятный глюк))

Вопрос касательно подключения конфига остался. Прописываю в конфиге:

define('CONTROLLER','controller/config.php');

Далее, в файле, где хочу подключить файл ( к примеру на главной странице ), прописываю:

<?php require_once CONTROLLER; ?>

Сохраняю и получаю ошибку:

Warning: require_once(E:\OpenServer\OpenServer\domains\myblog2.ru\controller): failed to open stream: Permission denied in E:\OpenServer\OpenServer\domains\myblog2.ru\index.php on line 3

Fatal error: require_once(): Failed opening required 'CONTROLLER' (include_path='.;e:/openserver/openserver/modules/php/PHP-5.6;e:/openserver/openserver/modules/php/PHP-5.6/PEAR/pear') in E:\OpenServer\OpenServer\domains\myblog2.ru\index.php on line 3

С конфигами разве так нельзя сделать? Дабы удобнее было в дальнейшем все редактировать с одного файла. Что не так указал?

Путь к файлу: E:\OpenServer\OpenServer\domains\myblog2.ru\controller\config.php

Если прописываю, к примеру, TITLE:

define('TITLE','Заголовок');

<?php echo TITLE; ?>

Все работает корректно. Тоже самое и с адресом. Не получается только вот этот конфиг подключить.

V
На сайте с 29.07.2016
Offline
7
#7

Может не к теме, но по последнему сообщению что то пишет про права к файлу...ошибка)

Надіслано від мого G630-U10, використовуючи Tapatalk

NothingMatters
На сайте с 12.06.2017
Offline
45
#8
Grep:
Это я понимаю. Правильный ведь путь указан. Если разбирать, то выходит следующие:
основная папка-->view-->right-menu.php.
выходит так: <?php include VIEW . '../right-menu.php';?> . Какой-то парадокс, но просто удалил все содержимое с файла right-menu, сохранил, вставил еще раз прежний код - и все заработало. Странный, но приятный глюк))
...
Если прописываю, к примеру, TITLE:
define('TITLE','Заголовок');

<?php echo TITLE; ?>

Все работает корректно. Тоже самое и с адресом. Не получается только вот этот конфиг подключить.

Проблема в слешах. В винде и nix системах слеши в разные стороны.

Используйте константу DIRECTORY_SEPARATOR вместо слешей, если хотите мультиплатфоременности.

И да, используйте АБСОЛЮТНЫЙ путь к файлам\папкам. Для автоматического получения абсолютного пути можно использовать конструкцию:

realpath(dirname(__FILE__));
SI
На сайте с 03.12.2007
Offline
130
#9
Grep:
...

Вопрос касательно подключения конфига остался. Прописываю в конфиге:
define('CONTROLLER','controller/config.php');

Далее, в файле, где хочу подключить файл ( к примеру на главной странице ), прописываю:
<?php require_once CONTROLLER; ?>

Сохраняю и получаю ошибку:
Warning: require_once(E:\OpenServer\OpenServer\domains\myblog2.ru\controller): failed to open stream: Permission denied in E:\OpenServer\OpenServer\domains\myblog2.ru\index.php on line 3

Fatal error: require_once(): Failed opening required 'CONTROLLER' ...

Порядок подключения конфигов проверьте.

Похоже у вас require_once вызывается раньше чем define().

Константа CONTROLLER - ещё не определена. И считается строкой 'CONTROLLER'.

G
На сайте с 24.11.2010
Offline
63
#10
Sigmo#ID:
Порядок подключения конфигов проверьте.
Похоже у вас require_once вызывается раньше чем define().
Константа CONTROLLER - ещё не определена. И считается строкой 'CONTROLLER'.

Начало документа:

<?php
require_once CONTROLLER;
?>

Описание константы:

define('CONTROLLER','controller/config.php')

Ошибка все таже

Warning: require_once(E:\OpenServer\OpenServer\domains\myblog2.ru\controller): failed to open stream: Permission denied in E:\OpenServer\OpenServer\domains\myblog2.ru\index.php on line 4

Fatal error: require_once(): Failed opening required 'CONTROLLER' (include_path='.;e:/openserver/openserver/modules/php/PHP-5.6;e:/openserver/openserver/modules/php/PHP-5.6/PEAR/pear') in E:\OpenServer\OpenServer\domains\myblog2.ru\index.php on line 4

То есть в порядке подключения - сперва идет CONTROLLER, потом уже остальное подгружается

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий