Strict Standards: Resource ID#31 used as offset, casting to integer (31) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#33 used as offset, casting to integer (33) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#34 used as offset, casting to integer (34) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Как писать пути к файлам при использовании Require
ТвойWeb » WebMaster класс » PHP/Perl » Как писать пути к файлам при использовании Require

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

1. Alice_vic - 29 Мая, 2008 - 17:09:18 - перейти к сообщению
Здравствуйте,
Cтала делать меню и что-то совсем запуталась, распутайте, пожалуйста!
У меня 2 вопроса.

1. Вот есть (будут) на сайте 5 разделов, для каждого своя папка: news/ , about/ , contacts/ и т.д.
Т.е. есть 5 пунктов меню.
Записала это меню в отдельный файл: menu.php . Он находится в КОРНЕВОМ каталоге.

И вот вопрос - как мне теперь к этому файлу обращаться через функцию require ? Т.е. к корневому каталогу? Если написать <? require( 'menu.php' ); ?> , то он, понятное дело, не находится.
Не понимаю принципа обращения к файлам.

2. И еще:
Вот у меня сейчас РНР файл лежит в такой папке: T:\home\localhost\k\kog\file.php
В нём есть такое обращение: style="background: url(/images/top.gif)" .
Почему же он это рисунок ищет в папке T:\home\localhost\images
, вместо того чтобы искать его в T:\home\localhost\k\images ?

Объясните пожжалуйста, или носом ткните где про это читать%)).
2. Furax - 29 Мая, 2008 - 22:57:45 - перейти к сообщению
Alice_vic
Существует разница между обработкой адресов браузером и PHP.

Браузер понятия не имеет про то, на каком диске и в какой директории находится корень сайта, он обращается к нему по URL (http://my.site.ru), а уже сервер, стоящий на твоём компе (или на любом другом), знает, какая директория является корнем сайта (кстати, одному сайту не обязательно соответствует только одна директория). Поэтому обращение к /images/top.gif побуждает браузер загрузить страницу http://my.site.ru/images/top.gif, а уже сервер понимает, что надо искать файл T:\denwer\home\site.ru\my\images\top.gif.

Если же обработка адресов происходит в PHP-скрипте, то здесь уже работают правила, принятые в файловой системе сервера. Ты можешь напрямую подключить файл, указав его абсолютный путь (T:\home\localhost\k\kog\menu.php), но это будет работать только на твоей машине (или там, где абсолютный путь совпадает с твоим вариантом). Поэтому удобнее использовать относительную адресацию.

Пусть в каталоге есть файл menu.php и каталог news, в котором лежат файл file.php и каталог archive, где лежит файл archive.php. Тогда из file.php сослаться на archive.php можно как "archive/archive.php" (обрати внимание: путь относительный, без указания диска и т. д.), а на menu.php - "../menu.php". ".." означает "на 1 каталог вверх". Если надо вверх на 2 каталога - пишем "../.." и так далее.
3. TvoyWeb - 30 Мая, 2008 - 00:39:29 - перейти к сообщению
Alice_vic
В PHP есть директива include_path в ней записаны пути где искать файлы подключаемые всевозможными инклюде.
PHP сначала ищет относительно папки откуда вызывается скрипт в котором подключаются файлы и потом ищет в в инклюде патч.
Посмотреть где PHP ищет файлы можно
CODE:
echo ini_get("include_path");

Я в своих сскриптах всегда использую такой код:
CODE:
if (!defined("PATH_SEPARATOR")) { define("PATH_SEPARATOR", getenv("COMSPEC")? ";" : ":"); }
ini_set("include_path", ini_get("include_path").PATH_SEPARATOR.dirname(__FILE__));

Здесь на первой строке проверяем директиву разделитель путей в инклюде патч и потом добавляем через разделитель новый путь в инклюде патч.
4. Alice_vic - 30 Мая, 2008 - 16:25:28 - перейти к сообщению
Furax Спасибо большое, очень помогло твое объяснение, вроде теперь всё сделала Радость .
TvoyWeb Это слишком гениальный код для меня Не понял , но все-таки хочется узнать - а что значит ? в верхней строке и вот эти двоеточия ";" : ":" за ним?
5. Systemnik - 31 Мая, 2008 - 06:13:00 - перейти к сообщению
Цитата:
Я в своих сскриптах всегда использую такой код:

Вот вот а мы тут недавно с cryptex'om с альфы мучались и правили твой код Ха-ха Маркус пусть не в тему но сделай нормально! на альфе отключен ini_set().... Огорчение Огорчение Я что бы установить форум мучался пол дня и правил кучу файлов.. Растерялся
6. Furax - 31 Мая, 2008 - 07:44:53 - перейти к сообщению
Alice_vic
Конструкция
CODE:
a ? b : c
значит следующее: если a, то b, иначе c. Например:
CODE:
print(isSet($_POST['user']) ? htmlSpecialChars($_POST['user']) : 'Гость');
Если POST-переменная user была задана, то будет выведено имя пользователя в безопасном виде, если нет - слово "Гость".

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0369]     [ Gzipped ]