php - заголовочный файл - проблема относительных путей - PullRequest
3 голосов
/ 27 апреля 2011

У меня есть веб-приложение в php. У меня есть header.php файл, где у меня есть открывающий HTML-тег, метаданные, CSS, JS файл включает в себя.

У меня есть несколько папок в этом приложении. Я указал относительные пути к файлам css, js в header.php. Проблема, с которой я сталкиваюсь, заключается в том, что когда я включаю этот файл header.php в другой файл, скажем, ./test-folder/my-file.php, относительные пути прерываются.

поэтому, чтобы решить эту проблему, я указал абсолютные пути, где это было необходимо. Но я должен менять эти пути каждый раз, когда загружаю на сервер. Можно ли это сделать другим способом?

Заранее спасибо

* 1013 Anji *

Ответы [ 4 ]

11 голосов
/ 27 апреля 2011

Не используйте статическое значение для пути, вместо этого определите константу для корня документа и используйте эту константу

define('ROOT_PATH',$_SERVER['DOCUMENT_ROOT']);

При включении файлов вы можете использовать эту константу.

include ROOT_PATH.'/some_dir/file.php';
2 голосов
/ 27 апреля 2011

У вас плохая архитектура в вашем приложении.Попробуйте найти информацию о MVC .
. Этот ответ может быть полезен: https://stackoverflow.com/questions/5721353/what-is-good-neat-architecture-in-programming/5793753#5793753
Итак:

  • изменить архитектуру
1 голос
/ 27 апреля 2011

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

require dirname(__FILE__).'/some_dir/file.php';

или по состоянию на php 5.3

require __DIR__.'/some_dir/file.php';

см. Также: http://docs.php.net/language.constants.predefined

0 голосов
/ 27 апреля 2011

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

Самый простой способ - определить константу, как ответил Шакти.

Тем не менее, в действительности вы можете иметь файл с уникальным именем, например «foobar», в корневой папке, а затем перемещаться по дереву из текущего каталога, пока не найдете foobar.

...