при размещении файла конфигурации вне публичного корня.как я могу назвать это на каждой странице без определения пути - PullRequest
4 голосов
/ 23 октября 2011

такова моя файловая структура.[..] являются папками

[public]
[libs]
[crontab]
[logs]
[sessions]
[tmp]

config.php

домен установлен в качестве общей папки в качестве корня.все остальное, включая файл config.php, находится вне корня.Конфигурация содержит информацию о подключении к БД и другие необходимые настройки.

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

спасибо

Ответы [ 4 ]

3 голосов
/ 23 октября 2011

В этом конкретном случае вы можете использовать:

include("$_SERVER[DOCUMENT_ROOT]/../config.php");
# Note: special exception array syntax within double quotes.

, который сначала разрешается в каталог public, но перемещается на один уровень назад ../, чтобы получить файл конфигурации вне docroot.


Но вы также можете использовать SetEnv в вашем .htaccess для определения другой переменной среды $_SERVER для этого случая.

1 голос
/ 23 октября 2011

Метод, который я часто использую для включения файлов, относящихся к определенному местоположению в ваших структурах webroot, заключается в том, чтобы использовать включение / требование следующим образом:

require_once(dirname(__FILE__) . '/path/to/include.php');

Таким образом, кодовая базаМиграциям не нужно изменять жесткие ссылки или константы, если файлы остаются относительно друг друга одинаково.

0 голосов
/ 23 октября 2011

См. set_include_path() и документы по настройке include_path ini.

0 голосов
/ 23 октября 2011

Вы можете просто использовать константу для вашего пути и изменить ее один раз, и определить эту константу для каждого пути - включенный файл

Вы также можете посмотреть путь включения http://php.net/manual/en/function.set-include-path.php

...