Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как прописать путь от корня - запутался...

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Hapson
Отправлено: 14 Июня, 2013 - 21:00:46
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


Читал похожую тему, но что-то так и не понял. Собственно, как прописать путь от корня сайта, чтобы сайт работал на любом хостинге.

Я начал писать сайт и использую
CODE (htmlphp):
скопировать код в буфер обмена
  1. $_SERVER['DOCUMENT_ROOT']
  2. //например:
  3. include $_SERVER['DOCUMENT_ROOT'] . '/template/index.php';

На денвере это работает
Но вместо этого работает и это:
CODE (htmlphp):
скопировать код в буфер обмена
  1. include '../template/index.php'
  2. //результат тот же - файл подключается

А вот это не работает:
CODE (htmlphp):
скопировать код в буфер обмена
  1. include '/template/index.php'
  2. //не работает!


Я думаю нужно как-то прописать константу, которая будет корнем сайта на любом хостинге. Только как правильно..? Так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. define('ROOT', ..)
  2. //или
  3. define('ROOT', ../)
  4. //или все же
  5. define('ROOT', $_SERVER['DOCUMENT_ROOT'])


На денвере сервер документ рут превращается в Z:/home/test/www то есть это корневая папка сайта.
Подскажите пожалуйста

(Отредактировано автором: 14 Июня, 2013 - 21:20:58)



-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
VygVik
Отправлено: 14 Июня, 2013 - 21:10:32
Post Id



Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Попробуй так:
include 'folder/file.php';
 
 Top
Hapson
Отправлено: 14 Июня, 2013 - 21:21:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


VygVik пишет:
Попробуй так:
include 'folder/file.php';

Поправил первый пост - лишних скобок понаписал...
Без первого слеша тоже не работает.
(Добавление)
Когда правил шаблон джумлы, то в css прописывал пути картинок. Если нужно было указать путь от корня сайта, то писал так:
url("../image/kartinka.png")
Может и здесь по аналогии? Корень это '..' или '../'


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
LIME
Отправлено: 14 Июня, 2013 - 21:58:44
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




в *nix системах корень фс это ведущий(в начале пути) /
то же что в винде например С:
во ВСЕХ системах . - текущая папка
.. - родительская папка
 
 Top
esterio
Отправлено: 15 Июня, 2013 - 02:42:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




еще добавлю что не надо путать путь в файловой системе и путь в http
способно темы лично я пользуюсь
 
 Top
Hapson
Отправлено: 15 Июня, 2013 - 03:31:31
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


LIME
esterio
Спасибо, вроде разобрался.
(Добавление)
esterio пишет:
еще добавлю что не надо путать путь в файловой системе и путь в http
способно темы лично я пользуюсь

То есть это будет корневая директория со слешем на конце, правильно? И это будет работать на всех хостингах?


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Июня, 2013 - 03:41:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Да, на всех.
 
 Top
Ch_chov
Отправлено: 15 Июня, 2013 - 08:23:40
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Цитата:
dirname(__FILE__)

В PHP 5.3 есть константа __DIR__

Получиить "корень" из любого файла можно с помощью getcwd()

(Отредактировано автором: 15 Июня, 2013 - 08:24:10)

 
 Top
LIME
Отправлено: 15 Июня, 2013 - 12:24:06
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Hapson пишет:
То есть это будет корневая директория со слешем на конце, правильно?
нет неправильно
это будет путь от корня до файла в котором определяется константа
если это выполнить в index.php лежащем в корне тогда да...
 
 Top
Hapson
Отправлено: 15 Июня, 2013 - 13:12:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


LIME пишет:
нет неправильно
это будет путь от корня до файла в котором определяется константа
если это выполнить в index.php лежащем в корне тогда да...

Ага, то есть, если я определю эту константу в корне (в файле config.php), то я смогу в любом файле потом писать... ну например в файле шаблона хочу что-то подключить:

1. в config.php (в корне сайта) прописал define('ROOT', dirname(__FILE__).'/');
2. файл шаблона лежит корень/template/home/index.php
3. а то что хочу подключить к нему (например function.php) лежит в корень/inc/function.php

И чтобы включить function.php в index.php, я в index.php пишу
CODE (htmlphp):
скопировать код в буфер обмена
  1. include ROOT . 'inc/function.php';
  2. //получается ROOT эквивалентно ../


Или я опять не понял?


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
LIME
Отправлено: 15 Июня, 2013 - 13:16:06
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




понял
только как говорили
Ch_chov пишет:
В PHP 5.3 есть константа __DIR__
 
 Top
Hapson
Отправлено: 15 Июня, 2013 - 13:33:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


Сейчас поэкспериментировал.
CODE (htmlphp):
скопировать код в буфер обмена
  1. /*Вставлял разные варианты в файл index.php, который лежит в корне*/
  2.  
  3. echo getcwd();
  4. //выводит Z:\home\test\www
  5.  
  6. echo __DIR__;
  7. //выводит Z:\home\test\www
  8.  
  9. echo dirname(__FILE__);
  10. //выводит Z:\home\test\www
  11.  
  12. /*А теперь все тоже вставлял в корень/template/home/index_home.php*/
  13.  
  14. echo getcwd();
  15. //выводит Z:\home\test\www
  16.  
  17. echo __DIR__;
  18. //выводит Z:\home\test\www\template\home
  19.  
  20. echo dirname(__FILE__);
  21. //выводит Z:\home\test\www\template\home


Получается, что я могу прописать в config.php (который в корне... хотя нет разницы где он), так:

CODE (htmlphp):
скопировать код в буфер обмена
  1. define('ROOT', __DIR__ . '/');
  2. //f далее в любом файле, независимо от вложенности буду писать
  3. include ROOT . 'template/home/index_home.php';
  4. //или
  5. include ROOT . 'inc/function.php';
  6. //ну и так далее

(Добавление)
О нет нет.
Если я определю константу ROOT как __DIR__ то это нужно сделать только в том файле, который лежит в корне.


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
DelphinPRO
Отправлено: 15 Июня, 2013 - 13:39:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Hapson пишет:
define('ROOT', __DIR__ . '/');
Hapson пишет:
который в корне... хотя нет разницы где он

есть разница.
при такой записи, вы получаете в константу ROOT путь до файла в котором она определяется. вдумайтесь в это предложение.


Вообще подобную константу логичнее определять в точке входа (index.php), т.к. этот файл всегда лежит в корне сайта.

Разумеется данный вариант прокатит, если вы используете единую точку входа в своем приложении, т.е. все запросы проходят через index.php.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Hapson
Отправлено: 15 Июня, 2013 - 13:47:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


DelphinPRO пишет:
Hapson пишет:
define('ROOT', __DIR__ . '/');
Hapson пишет:
который в корне... хотя нет разницы где он

есть разница.
при такой записи, вы получаете в константу ROOT путь до файла в котором она определяется. вдумайтесь в это предложение.


Вообще подобную константу логичнее определять в точке входа (index.php), т.к. этот файл всегда лежит в корне сайта.

Разумеется данный вариант прокатит, если вы используете единую точку входа в своем приложении, т.е. все запросы проходят через index.php.

Ну да, у меня все будет через index.php
Вот он
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. define('DANGER', 1);
  3. include_once './inc/fun.php';
  4. cms_install(); //проверяем, установлена ли cms
  5. include_once './config.php';
  6. include_once './template/' . TEMPLATE . '/index_home.php';
  7. ?>


И я его изменю так

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. define('DANGER', 1);
  3. define('ROOT', __DIR__);
  4. include_once ROOT . '/inc/fun.php';
  5. cms_install(); //проверяем, установлена ли cms
  6. include_once ROOT . '/config.php';
  7. include_once ROOT . '/template/' . TEMPLATE . '/index_home.php';
  8. ?>


...работает


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
DelphinPRO
Отправлено: 15 Июня, 2013 - 13:48:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Hapson пишет:
И я его изменю так
...работает

правильно. так и следует делать.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB