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 :: Как прописать путь от корня - запутался... [2]

 PHP.SU

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


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

> Без описания
Hapson
Отправлено: 15 Июня, 2013 - 13:51:56
Post Id



Посетитель


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


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

[+]


А есть смысл заменять слеш на DIRECTORY_SEPARATOR ?
Ну например так

CODE (htmlphp):
скопировать код в буфер обмена
  1. define('DS', DIRECTORY_SEPARATOR);
  2. //а потом писать не так
  3. include_once ROOT . '/inc/fun.php';
  4. //а вот так
  5. include_once ROOT DS 'inc' . DS . 'fun.php';


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


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


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


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




нет смысла
винда понимает оба слеша
 
 Top
Hapson
Отправлено: 15 Июня, 2013 - 13:59:00
Post Id



Посетитель


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


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

[+]


LIME пишет:
нет смысла
винда понимает оба слеша


Понятно, спасибо.
Как же тогда быть с админкой... Вход в админку через другой index.php, который лежит в корень/admin/index.php
(Добавление)
Может прописать константу в config.php, так как он подключен к обоим index.php и лежит в корне


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



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


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


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




в общем опишу так.
1. слешы
nix*-ы понимают только /
винда же понимает оба варианта.
Но все же для полной кростплатферменности используют DIRECTORY_SEPARATOR
И вы в правильном направлении движитесь, так как константа долгая и многые определяют свою

2. какподсказали выше getcwd
Но если бы прочитали доку то увидели бы такое:
Цитата:
На некоторых вариантах Unix getcwd() вернет FALSE, если на каком-либо из родительских каталогов не установлен режим чтения или поиска, даже если он установлен на текущем каталоге

Поетому результатам данной функции я бы не доверял
3. $_SERVER['DOCUMENT_ROOT'] - отлично работает на апаче, но увы с nginx не прокатит.
4. __DIR__ - то что нужно, и как писали выше появилась в PHP 5.3
5. dirname(__FILE__) - древняя конструкция и работает везде, но не забываем о том что все уже сидят на 5.3 версии

Теперь стосовно __DIR__ и __FILE__:
обе константы предопределенные и указивают на текущый каталог/файл в котором вызвана константа
данный подход отлично как раз подходит для единой точкы входа, тоесть index.php

А щас о вашем индексе в админке. Есть два варианта

или

оба варианта верны при условии что админка на один уровень вложености ниже.

Также есть вариант такой

Но лично мне такой подход не нравится. Ибо я лублю работать с абсолютными путями

(Отредактировано автором: 15 Июня, 2013 - 14:26:30)

 
 Top
Hapson
Отправлено: 15 Июня, 2013 - 14:39:59
Post Id



Посетитель


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


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

[+]


esterio
А ничего, если в index.php будет

а в admin/index.php будет

Это же получается... что это вообще получается?


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



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


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


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




получится то что надо
 
 Top
Hapson
Отправлено: 15 Июня, 2013 - 14:47:12
Post Id



Посетитель


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


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

[+]


esterio пишет:
получится то что надо

А ну да, то есть конфликта здесь никакого не будет.
Просто можно будет уже не думать, откуда попал на тот или иной файл - из фронта или из админки, просто везде писать ROOT.
Спасибо! Улыбка


все еще не могу жать на спасибо...

(Отредактировано автором: 15 Июня, 2013 - 14:48:12)



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



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


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


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




Цитата:
Но если бы прочитали доку то увидели бы такое:
Цитата:
На некоторых вариантах Unix getcwd() вернет FALSE, если на каком-либо из родительских каталогов не установлен режим чтения или поиска, даже если он установлен на текущем каталоге

Поетому результатам данной функции я бы не доверял

А не нужно закрывать доступ на чтение к каталогам в которых находятся скрипты.
 
 Top
DelphinPRO
Отправлено: 15 Июня, 2013 - 22:30:51
Post Id



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


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


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




LIME пишет:
нет смысла
винда понимает оба слеша

esterio пишет:
в общем опишу так.
1. слешы
nix*-ы понимают только /
винда же понимает оба варианта.

блин, опять!!! задолбался объяснять!! винда не понимает — ей вообще пофиг данный момент, — винда понимает только один вид слэша - "\"
а в скриптах понимает php, скомпиленный под винду, который преобразует "\" в "/" (или наоборот, неважно), это разные вещи, и это нужно понимать.

Hapson пишет:
Как же тогда быть с админкой... Вход в админку через другой index.php, который лежит в корень/admin/index.php

вы как разработчик знаете расположение админки относительно корня, значит вы можете вычислить этот путь.
Пполучить абсолютный путь путь можно функцией realpath()
грубо говоря если ваша админка лежит в каталоге admin основного каталога сайта, то в /admin/index.php вы можете определить константу
define ('ROOT', realpath(__DIR__.'/../')) в файле index.php;

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



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
caballero
Отправлено: 15 Июня, 2013 - 22:41:10
Post Id


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


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


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




Цитата:
винда не понимает — ей вообще пофиг данный момент, — винда понимает только один вид слэша - "\"

так понимает или пофиг?

лично моя винда понимает оба слеша

вот пнул ради интереса
z:\denwer\Restart.exe
z:/denwer/Restart.exe

Цитата:
а в скриптах понимает php, скомпиленный под винду, который преобразует "\" в "/" (или наоборот, неважно),

компилятору все равно что ты пишешь в строке

(Отредактировано автором: 15 Июня, 2013 - 22:41:30)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
esterio
Отправлено: 16 Июня, 2013 - 00:55:16
Post Id



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


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


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




 
 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