Я использую WAMP и имею сайт разработки в каталоге www. Я хочу использовать dirname(__FILE__)
чтобы определить путь к корню сервера.
В настоящее время я использую конфигурационный файл, который содержит:
define('PATH', dirname(__FILE__));
Я включаю файл конфигурации в свой файл header.php
следующим образом:
<?php require_once("config.php") ?>
Затем на моих вспомогательных страницах я использую константу PATH
для определения пути, включая header.php
.
<?php require_once("../inc/header.php"); ?>
Однако мои ссылки выходят следующим образом:
<link rel="stylesheet" href="C:\wamp\www/css/style.css" />
Что мне нужно сделать, чтобы исправить это? И поскольку я включаю константу в файл header.php
у меня нет доступа к константе в начальном require_once("../inc/header.php");
Какой еще метод я могу использовать для поиска корня для header.php
?
Похоже, вам просто нужно иметь
define('PATH', $_SERVER['SERVER_NAME']);
Если вы хотите быть супер техничным, вы можете сделать что-то подобное.
define('PATH', str_replace($_SERVER['DOCUMENT_ROOT'], $_SERVER['SERVER_NAME'] . '/', dirname(__FILE__)));
На стороне примечания, и что более важно , вы на самом деле не нуждаетесь в них. Это сработает.
<link rel="stylesheet" href="/css/style.css" />
Когда href начинается с разделителя каталогов, он считается относительно корня документа, а не текущего рабочего каталога.
__FILE__
– путь к файловой системе, а не путь URL. Я думаю, вы можете запутаться в том, что вам нужно. Чтобы включить php-файлы или перемещать вещи, вы хотите использовать путь к файловой системе. Чтобы создать URL-адреса для ресурсов, вы хотите использовать URL-адрес.
Для файлов файловой системы вы можете использовать имя dirname(__FILE__)
. Таким образом, в вашем переднем контроллере или точках входа верхнего уровня, если вы не используете шаблон переднего контроллера, у вас могут быть такие вещи, как:
define('ROOT_PATH', dirname(__FILE__)); define('INC_PATH', ROOT_PATH . DIRECTORY_SEPARATOR . 'includes');
Что касается asstes go (css, images, js), мне нравится держать их в одном месте на DOCUMENT_ROOT
поэтому путь всегда /css/path/to/file.css
независимо от того, где вы находитесь в файловой структуре. Это может быть проблемой, если вы разрабатываете вложенные папки на вашем локальном компьютере или сервере тестирования, но его легко избежать с помощью виртуальных хостов, чтобы каждый сайт имел свою собственную файловую структуру, полностью разделяющую другие.
$server = str_replace('\\','/',$_SERVER['SERVER_NAME']); $server = (substr($server,-1)=='/'?substr($server,0,strlen($server)-1):$server); !defined('PATH')?define('PATH', 'http://'.str_replace($_SERVER['DOCUMENT_ROOT'],$server , str_replace('\\','/',dirname(__FILE__)))):'';