inpost
14.01.2015 - 00:25
Всем привет. Простой вопрос, в чём отличие между
'file.php'
'./file.php'
'/file.php'
И в каком случае какой применяется?
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
volter9
14.01.2015 - 00:44
inpost'file.php' – это file.php в папке в которой вызван был скрипт (т.е. не только в точке входа, но и еще в подключенных файлах точки входа).
'./file.php' – это file.php в папке в которой начался скрипт (в точке входа).
'/file.php' – это file.php который лежит в корне системе.
Пример. Есть данная структура:
index.php
dir/
----file.php
----another.php
----third.php
file.php
index.php подключает 'file.php' и 'dir/file.php' (тут первый вариант, относительно папки скрипта). 'dir/file.php' подключает 'another.php' (через первый вариант) и './dir/another.php' (относительно точки входа).
require 'dir/file.php';
require 'file.php';
echo "Hello, I'm from file.php";
require 'another.php';
require './dir/third.php';
echo "I'm from file.php in dir directory\n";
echo "I'm another.php\n";
echo "I'm third.php file\n";
Вывод:
I'm another.php
I'm third.php file
I'm from file.php in dir directory
Hello, I'm from file.php
Так то в PHP и это умудрились сделать
через жопу неправильно. Нормально (типа node.js) './' это относительно данного скрипта. Надеюсь доступно объяснил :)
_____________
Мой блог
inpost
14.01.2015 - 00:48
volter9/file.php. Что в твоём понимании корень системы? У меня не работает. Создаём папку "1" в корне. В папке 1 пишем include '/file.php'; В корне лежит file.php , он не подключается.
file.php - в котором вызван скрипт? В чём отличие от точки входа? У меня работает абсолютно одинаково с './'.
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
volter9
14.01.2015 - 00:52
inpost'/file.php' это типа как в *nix системах, есть корень системы, если у Вас винда, то это не должно работать (попробуйте 'C:\file.php', С или другой диск).
В точке входа 'file.php' и './file.php' будет работать одинаково. Но если подключить другой скрипт (скажем в папке directory), то './file.php' это будет 'file.php' а 'file.php' это будет 'directory/file.php'.
_____________
Мой блог
sergeiss
14.01.2015 - 01:01
Я уже давно не парюсь с этими путями. А просто сразу же прописываю константу, описывающую путь от корня диска до нужного места. Называю ее, например, BASE_SUB_DIR, располагаю в конфигурационном файле, который всегда подключается. А при инклуде что-нибудь типа
include BASE_SUB_DIR.'/files/file.php';
И пофиг, откуда подключаю, из скрипта какой вложенности. Я уверен, что файл подинклудится корректно, хоть я из "корневого" скрипта работаю, хоть из какого-то "глубинного".
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
inpost
14.01.2015 - 01:08
volter9Сервер Linux.
Покажи пример отличия между 'file.php' и './file.php' в следующем файле:
site.ru/1/test.php
include './2/test2.php'; // расположение site.ru/1/2/test2.php
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
inpost
14.01.2015 - 01:10
sergeissКак ты формируешь BASE_SUB_DIR ? DOCUMENT_ROOT ? Или связку с __FILE__ ?
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
volter9
14.01.2015 - 01:12
Цитата (inpost @ 14.01.2015 - 01:08) |
Покажи пример отличия между 'file.php' и './file.php' в следующем файле: site.ru/1/test.php include './2/test2.php'; // расположение site.ru/1/2/test2.php |
'./2/test2.php' = site.ru/2/test2.php
'2/test2.php' = site.ru/1/2/test2.php
Вот пример с '/file.php':
Мой скрипт лежит в '/Users/Volter/Desktop/test/index.php':
require '/file.php';
И файл 'file.php' в корне системы, т.е. '/file.php' будет вызван.
Цитата |
Как ты формируешь BASE_SUB_DIR ? DOCUMENT_ROOT ? Или связку с __FILE__ ? |
Можно так:
define('ROOT_PATH', dirname(__FILE__));
require ROOT_PATH . '/dir/test.php';
require ROOT_PATH . '/dir/dir2/test.php';
echo 'Hello!';
_____________
Мой блог
inpost
14.01.2015 - 01:21
volter9У меня оба варианта подключают "site.ru/1/2/test2.php".
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
volter9
14.01.2015 - 01:23
inpostМожет быть у меня наблюдается особенность OS X?
_____________
Мой блог
inpost
14.01.2015 - 01:39
volter9У тебя? Если бы я знал, я бы не спрашивал
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
sergeiss
14.01.2015 - 01:49
Цитата (inpost @ 14.01.2015 - 01:10) |
Как ты формируешь BASE_SUB_DIR ? DOCUMENT_ROOT ? Или связку с __FILE__ ? |
Жестко прописываю для определенного сервера. И прекрасно работает: как у меня на компе под Виндой, так и потом на сервере под юниксом. Надо только прописать это один раз и больше проблем нет.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
volter9
14.01.2015 - 02:03
Цитата (sergeiss @ 14.01.2015 - 01:49) |
Цитата (inpost @ 14.01.2015 - 01:10) | Как ты формируешь BASE_SUB_DIR ? DOCUMENT_ROOT ? Или связку с __FILE__ ? |
Жестко прописываю для определенного сервера. И прекрасно работает: как у меня на компе под Виндой, так и потом на сервере под юниксом. Надо только прописать это один раз и больше проблем нет.
|
А еще лушче использовать define('DS', DIRECTORY_SEPARATOR); вместо '/' (а то разные системы могут по разному реагировать на жестко закодированные '/' и '\').
Там еще в user notes такая классная функция есть:
http://php.net/manual/ru/dir.constants.php#114579
_____________
Мой блог
Игорь_Vasinsky
14.01.2015 - 07:40
Цитата |
А еще лушче использовать define('DS', DIRECTORY_SEPARATOR); |
а ещё лучше - это без разницы уже как года 3.
./file.php - файл в корне
/file.php как и file.php - равносильно __DIR__."/".file.php - т.е. директория из которой вызван скрипт
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
inpost
14.01.2015 - 14:08
Игорь_Vasinsky"./file.php - файл в корне"
Тоже не верно. Из папки 1 он будет обращаться к файлу, лежащему в той же папке.
"/file.php как и file.php"
Тоже не верно. находясь в папке 1 первый вариант не загрузит file.php из той же папки.
_________________________
Вот я об этом же и говорю. Какая-то путаница возникает. Ладно если / воспринимать как корень веб-сервера, то вот разница между './' и просто 'name.php' мне не понять. Может это как-то связано с 'include path' ?
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).