2013-08-21 2 views
2

Я хочу знать, как включить код (файл конфигурации) в php-файлы, которые существуют в разных глубинах каталога, без использования относительных путей или прямых абсолютных путей (жестко закодированные пути). Я не люблю использовать следующее:Как избежать жесткого кодирования корневого веб-сайта в php для включения «файла конфигурации»?

  • ../config.php
  • ../../config.php
  • ../../../config.php
  • с: /wamp/www/mysite/config.php

идея заключается в том, чтобы избежать необходимости модифицировать кратные файлы, когда:

  • Файл перемещен в другой каталог
  • Корень приложения изменяется

Что я сделал это положить в моем файле конфигурации следующее:

define("ROOT", dirname(__FILE__)); 

И в других файлах:

$root = realpath($_SERVER["DOCUMENT_ROOT"]); 
include $root ."/mysite/config.php"; 

Вы могли видеть, что я жестко закодированы папку моего сайта «/ MySITE». Может избежать жесткого кодирования этого имени каталога?

+0

Наступает момент, когда вам нужно решить, «сколько информации у меня есть, чтобы дать программе возможность найти нужный файл». Если вы перемещаете файл вокруг, но он всегда имеет одно и то же имя, я полагаю, вы могли бы «искать все дерево для информации». Но в другом месте вам нужно поставить ставку в землю. Интересно, не отвлекаете ли вы себя на это ... – Floris

+0

'dirname (__ FILE __)' можно заменить на '__DIR__', если вы на PHP 5.3 или выше (каким вы должны быть). – Spudley

+0

Привет @Floris, я пришел из ASP.NET, где каждый файл имеет прямой доступ к конфигурационному файлу (web.config), поэтому в том числе файлы в том, что php работает для меня новичком. Вот почему я спрашиваю. Вы могли видеть это как лучший способ поставить ставку. – mjsr

ответ

0

Не могли бы вы просто изменить это на это?

$root = realpath($_SERVER["DOCUMENT_ROOT"]) . "/mysite/"; 
include $root ."config.php";