Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 022 831 раз!

Форум

Добро пожаловать, Гость!

Абсолютный путь к таблице стилей.

Обсуждение общих вопросов связанных с программой
anempadest
Сообщения: 8
C нами: 2 года 9 мес

Непрочитанное сообщение anempadest » 12 фев 2014, 15:57

В разделе <head> пишу:
<link href="<? echo $_SERVER['DOCUMENT_ROOT'] . '/z/css/layout.css' ?>" rel="stylesheet" type="text/css">

На локальном сервере OpenServer путь строится правильно, но стили не применяются
На сервере провайдера (если загрузить на хостинг сервер) всё работает.
Как исправить?

Аватара пользователя
fade
Сообщения: 11
C нами: 2 года 11 мес

Непрочитанное сообщение fade » 12 фев 2014, 17:13

Вот так будет кроссдоменно ;)
<link href="/z/css/layout.css" rel="stylesheet" type="text/css">

anempadest
Сообщения: 8
C нами: 2 года 9 мес

Непрочитанное сообщение anempadest » 12 фев 2014, 18:01

Спасибо. Но мне кажется, что ответ не удовлетворительный.
Я собираю PHP страницЫ по принципу:
include HEADER.php
<article></article>
include FOOTER.php

Так строятся разные страницы сайта, которые находятся на разных уровнях и в разных директориях.

Путь к таблице стилей я прописываю в файле HEADER.php, поэтому мне хотелось бы, чтобы путь строился корректно относительно корня сайта, а не относительно страницы, которая собирается.

Аватара пользователя
Asmodey
Сообщения: 299
C нами: 4 года 7 мес

Непрочитанное сообщение Asmodey » 12 фев 2014, 18:18

Отделите мух от котлет! Где путь в локальной файловой системе, а где чаcть урла.

anempadest
Сообщения: 8
C нами: 2 года 9 мес

Непрочитанное сообщение anempadest » 12 фев 2014, 18:52

Скрипт $_SERVER['DOCUMENT_ROOT'] . '/z/css/layout.css'

- на локальном сервере OpenServer возвращает:
D:/OpenServer/domains/mysite/z/css/layout.css

- на хост сервере возвращает:
http://mysite.com/z/css/layout.css

Что неправильно?

Аватара пользователя
DelphinPRO
Сообщения: 637
C нами: 4 года 10 мес
Откуда: Самара
Контакты:

Непрочитанное сообщение DelphinPRO » 12 фев 2014, 21:15

Неправильно то, что не следует использовать $_SERVER['DOCUMENT_ROOT'] в своих скриптах, так как его содержимое настраивается админом сервера, и может быть любым. Если вы пишете нормальный переносимый скрипт, определяйте корни самостоятельно.
Для файловой системы - это __DIR__ в точке входа, для URL - адреса начинаться должны со слеша, как вам подсказали выше.

/z/css/layout.css


Это и будет URL-адрес, относительно корня вашего сайта.

anempadest
Сообщения: 8
C нами: 2 года 9 мес

Непрочитанное сообщение anempadest » 13 фев 2014, 00:39

Тогда будьте любезны, объясните мне, как поступить и как написать правильно.

Вопрос 1. Ссылки в INCLUDE
Я должен указать адрес файла, который я буду вставлять.
Вы советуете писать так:

include "/z/header.php";


Для страницы, которая лежит в корне сайта, этот код работает. Но для страницы, которая лежит на втором уровне, уже выдаётся ошибка. И работает, если прописать другой путь:

include "../z/header.php";


Вопрос 2. INCLUDE во вложенном файле.
Я вставляю содержимое файла через INCLUDE. В самом вставляемом файле также есть вставка через INCLUDE. Во вставляемом файле я по вашему совету прописал ссылки, которые начинаются слешем
При формировании файла, который лежит в корне, всё работает. Для файла, который находится на втором уровне, получаю ошибку о том, что влагаемого файла не существует.

Прошу помочь.

Аватара пользователя
fade
Сообщения: 11
C нами: 2 года 11 мес

Непрочитанное сообщение fade » 13 фев 2014, 08:59

<link href="<? echo $_SERVER['HTTP_HOST'] . '/z/css/layout.css' ?>" rel="stylesheet" type="text/css">
вернет хост, т.е. адрес сайта)

Аватара пользователя
DelphinPRO
Сообщения: 637
C нами: 4 года 10 мес
Откуда: Самара
Контакты:

Непрочитанное сообщение DelphinPRO » 13 фев 2014, 09:16

anempadest писал(а):Вы советуете писать так:

Код: Выделить всё
include "/z/header.php";


НЕТ!!! Путь в файловой системе и Универсальный указатель ресурса в сети (URL) - ЭТО РАЗНЫЕ ВЕЩИ!!!

При операциях с файловой системой сервера следует указывать либо относительные пути (от места расположения выполняемого файла), либо абсолютные, от корня сервера (под сервером понимается компьютер, на котором все работает, не путать с корнем сайта). При указании абсолютных путей часто используют константу, содержащую путь от корня сервера, до корня сайта. Самый простой способ задания такой константы - в единой точке входа, которая расположена в корне сайта (index.php).

В вашем случае точек входа, по видимому, дохрена, можно попробовать перечислить все ваши папки с подключаемыми файлами в include_path и подключать include 'header.php';

anempadest
Сообщения: 8
C нами: 2 года 9 мес

Непрочитанное сообщение anempadest » 13 фев 2014, 15:47

перечислить все ваши папки с подключаемыми файлами в include_path

Где это прописать? Где он находится?

DelphinPRO писал(а):Путь в файловой системе и Универсальный указатель ресурса в сети (URL) - ЭТО РАЗНЫЕ ВЕЩИ

Я правильно Вас понял?
Если я обкатываю сайт на локальном сервере OpenServer, я должен прописывать путь в файловой системе. А перед выгрузкой в сеть я должен все пути переписать на доступ к домену.

А можно как-то упростить мою работу? У меня всё время будет уходить только на переписывание путей.


Вернуться в «Обсуждение Open Server»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость