Как правильно связать файлы? - PullRequest
0 голосов
/ 01 ноября 2011

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

Например, связывание стилей CSS, файлов Javascript и включение файлов в PHP.Проблема в том, что на моем ПК каталог моего проекта был /www/project-name/, а когда я помещал проект на сервер, каталог был бы /www/.Когда я загружал проект на сервер, изображения не показывались, стили не работали, соединения с базой данных не устанавливались, функции не определялись и т. Д. *

Итак, мой вопрос: Какой самый лучший и самый эффективный способ связать / включить файлы?

Что-то, что будет работать независимо от того, какой каталог проекта, и, возможно, если я включу project/includes/mysql.class.php в file1.phpи я перемещаю этот файл в другой каталог, он все равно будет правильно включать project/includes/mysql.class.php

Ответы [ 4 ]

1 голос
/ 01 ноября 2011

Вы можете определить корневой каталог документа проекта, а затем включить все файлы в зависимости от него

положить

define(DOC_ROOT, realpath(direname(__FILE__)); 

в вашем фронт-контроллере, и когда вам нужно включить файл

include(DOC_ROOT . "/includes/file.php");

все фреймворки используют этот метод

1 голос
/ 01 ноября 2011

Вы должны использовать относительные пути.

Вместо того, чтобы указывать полный путь ('/www/project-name/include/whwhat.php'), используйте путь относительно текущего местоположения:

'./includes/whatever.php'
0 голосов
/ 02 ноября 2011

В общем, это то, чем я занимаюсь.

Я использую корневые относительные URL внутри html (например, src="/images/logo.jpg"). Таким образом, я могу просто скопировать HTML-код с одной страницы и вставить его на другую, не беспокоясь о том, что ссылка не работает, потому что другая страница находится в папке.

Я относительные URL в css, потому что все ресурсы, которые я использую внутри css, например изображения, я храню в той же папке, что и файл css (или его подкаталог). Я в основном это делаю, потому что он короче (url(img/background.jpg); против url(/css/img/background.jpg);). Небольшой дополнительный бонус - вы можете просто скопировать папку css, чтобы создать новую тему, основанную на старой, без необходимости изменять все URL в css.

В PHP я использую include($_SERVER['DOCUMENT_ROOT'] . '/includes/mysql.php');. Вы можете просто скопировать этот код в другой файл в другой папке, и он все равно будет работать.

Единственный раз, когда мне редко нужно жестко задавать пути, это htaccess.

0 голосов
/ 01 ноября 2011

Я бы предложил использовать относительный путь (например, ../style.css или ../../style.css) ../ ссылается на родительский каталог для текущего файла.

...