• UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 449-04-21  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 630-90-82  MTC
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

Хостинг. Объязательный абсолютный путь к файлу для require и include

Форумы Хостинг Объязательный абсолютный путь к файлу для require и include
frolly35
19.05.2017
хостинг: есть
домен: есть
Объязательный абсолютный путь к файлу для require и include
Всем привет)
Такой вопрос, это нормально что у меня на сайте не работает "относительные пути к файлу" для require, include, require_once, include_once?
Если указываю путь к файлу типа
require('templates/test/index.php')
- то я получаю еррор.
Если использую вида
require('/home/engine32/moidomen.ru/www/templates/test/index.php')

то всё нормально.

Если я буду использовать абсолютный путь к файлу это не понизит безопасность сайта?
Спасибо
toxi
20.05.2017
хостинг: есть
домен: есть
Доброго дня.
Безопасность не понизится, но при переносе сайта, нужно будет все пути редактировать заново в всех файлах.
Можете показать, какие ошибки показываются?
frolly35
20.05.2017
хостинг: есть
домен: есть
Warning: require_once(/templates/top/categories.php): failed to open stream: No such file or directory in /home/engine07/moidomen.ru/www/engine/controllers/VideoController.php on line 475

Fatal error: require_once(): Failed opening required '/templates/top/categories.php' (include_path='.:/usr/local/pear/php55') in /home/engine07/moidomen.ru/www/engine/controllers/VideoController.php on line 475
toxi
20.05.2017
хостинг: есть
домен: есть
Есть вероятность, что при использовании относительного пути скрипт, который подключает другой файл, находятся в разных каталогах либо главный файл, например index.php, который собирает все файлы вместе, образуя уже готовую страницу, не находит этот файл относительно своего каталога.
Например:
index.php
|_ 1dir
| |_ 1.php
|_ 2dir
| |_ 2.php
|_ 3dir
|_ 3.php

Если в таком случае Вы инклудите в файл 2.php файл 3.php через require('3dir/3.php') то будет ошибка.
Если попробовать написать так: require('../3dir/3.php') то должен подключиться без проблем, так как мы вернулись в "корневой каталог" и в нем ищем папку 3dir и в ней файл 3.php, что нам и нужно. Возможно у Вас похожая ситуация. Попробуйте добавить "возврат на каталог выше" в require('templates/test/index.php'). Например так: require('../templates/test/index.php') либо может потребоваться даже так: require('../../templates/test/index.php')
Дмитрий Б.
20.05.2017
хостинг: есть
домен: нет
1
Указанная Вами конструкция
require('templates/test/index.php') © frolly35

должна работать.
Судя по тексту ошибки
Warning: require_once(/templates/top/categories.php) © frolly35

пусть указан как require('/templates/test/index.php') т.е. с лидирующим слешем. И воспринимается как полный путь.
frolly35
20.05.2017
хостинг: есть
домен: есть
Спасибо, да я был немного невнимательный, если без первого '/' то всё норм, но я по любому решил поставить для include и require .. константу ROOT_TPL.
define( 'ROOT_DIR', dirname(__FILE__) );
define( 'TPL', '/templates/top/' );
define( 'ROOT_TPL', ROOT_DIR . TPL );

Спасибо )
Участвовать в общении на этом форуме могут только
зарегистрированные пользователи.

Если вы уже зарегистрированы Вам необходимо войти на форум.

Горячая линия
(044)
392 74 33
другие города