dirname (__ FILE__) на localhost

Я использую 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__)))):'';