Intereting Posts

Как установить корневую папку для файлов PHP include

Я провел дни, исследуя Интернет, и я не могу найти ответ, который я пойму и смогу реализовать.

У меня есть веб-сайт, на котором я хочу использовать файлы include_once и иметь возможность правильно просматривать веб-сайт как на локальном, так и на фактическом сервере.

Раньше я использовал $_SERVER['DOCUMENT_ROOT'] но он не работает на локальном хосте, поэтому мне сложно обновить и внести изменения на веб-сайт.

Я хочу создать какой-то файл config.php, в котором могу сказать, что корневая папка называется htdocs или public_html и «начинает» поиск файлов оттуда.

Или есть ли какой-либо другой способ, которым я могу включить включенные пути для работы?

Я видел ответы, например, с dirname(__FILE__) , dirname(__FILE__) и т. Д., Но они никогда не объясняли, как это будет работать, где писать его в коде и т. Д. Мне немного надоело находить часть ответа и затем бегите по кругу, просто попробуйте «заполнить» пробелы. Я не эксперт по PHP, просто пытаюсь сделать мою жизнь немного легче, используя ее.

dirname(__FILE__) и dirname(__FILE__) оба одинаковые и __DIR__ поставляется с PHP 5.3

Они используются, чтобы указать, что «путь к файлу, в котором они вызывались».

 URL: http: //localhost/test/a.php

 DIR: --NIX
      /var/www/test/a.php
      --ВЫИГРАТЬ
      D: \ лампа \ WWW \ тест \ a.php

 // a.php внутри
 <? PHP
 echo __DIR__;

Дает вам это на linux: /var/www/test

Итак, если вам нужен параметр конфигурации во всем вашем проекте, просто определите его в своем config.php и используйте его там, где вы хотите, чтобы оба имени файла были включены.

 ./
   config.php
   index.php
   header.php
   footer.php
   / Lib
     foo.php
   / TMP
     bar.php

./config.php define('ROOT', __DIR__ .'/');

./index.php include_once(ROOT .'header.php'); ... include_once(ROOT .'footer.php'); include_once(ROOT .'header.php'); ... include_once(ROOT .'footer.php');

т.е., используя его в tmp dir

./tmp/bar.php include_once(ROOT .'lib/foo.php');

ОБНОВИТЬ

 // config.php <?php define("ROOT", __DIR__ ."/"); 

Итак, мы используем это для index.php чтобы включить banner.php и banner.php в ./banners/banner.php ;

 // index.php and the very first line! <?php include_once("config.php"); ?> // some html stuff // ... <?php include_once(ROOT ."banners/banner.php"); ?> // some more html stuff // ... 

Итак, сначала вы должны включить config.php туда, где вам это нужно.

Я думаю, это является основным, насколько это необходимо …

ОБНОВИТЬ

Так что ваша проблема не в PHP, а в системе, но вопрос, во всяком случае … 🙂

Если ваш путь изображения изменяется (поэтому не фиксирован), вы можете сделать это следующим образом;

 // config.php define("ROOT", __DIR__ ."/"); define("HTTP", ($_SERVER["SERVER_NAME"] == "localhost") ? "http://localhost/your_work_folder/" : "http://your_site_name.com/" ); // banner.php <img src="<?php print HTTP; ?>images/banner.gif"> 

Я обычно настраиваю то, что вы упомянули, config.php в каталоге include и имеет в себе следующую строку: define('BASE_PATH', str_replace('/include', '', dirname(__FILE__))); («/ include должен быть в любом каталоге вашего файла config.php, если он есть в корневом каталоге, вы можете просто использовать define('BASE_PATH', dirname(__FILE__)); ). Когда я хочу включить любые другие После этого я использую include_once(BASE_PATH . '/directory/file.php');

Примечание: эта концепция для меня не является оригинальной.

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

 define('PROJECT_ROOT', getcwd()); 

Чтобы получить / отобразить текущий рабочий каталог, php имеет встроенную функцию для этого

  echo getcwd() . "\n"; 

Будет отображаться текущий каталог вашего php-файла, который сейчас выполняется.

Вы также можете изменить путь включения, например,

 $dir = dirname(__FILE__); set_include_path($dir . '/../library' . PATH_SEPARATOR . $dir . '/../engine' . PATH_SEPARATOR . get_include_path());