Мне нужно 2 разных пути, один для включений и один для js / css и т. Д. Я использую mod_rewrite
. Ниже работает отлично ….
В настоящее время все мои файлы содержат это в верхней части
define('SERVER_ROOT', 'C:/wamp/www/site_folder/'); define('SITE_ROOT', 'http://localhost/site_folder/');
а затем файлы вызываются так:
require_once SERVER_ROOT . 'st_wd_assets/inc/func_st_wd.php'; <link rel="stylesheet" type="text/css" href="<?php echo SITE_ROOT;?>st_pages/user_area/css/user_area.css" media="screen"/>
как вы, вероятно, увидите, это будет огромная задача, чтобы обновлять вершину каждого файла каждый раз, когда я перемещаю версии между локальным хостом и моим живым сервером.
Каков наилучший / стандартный способ определения этих значений ROOT?
Я не вижу решения в супер-глобальном $_SERVER
? Обычно ли люди используют VirtualHosts? Но тогда еще не нужно было бы определять константы ROOT?
Да. Обычно люди просто используют VirtualHosts.
Есть несколько способов.
php_value auto_prepend_file
в .htaccess почему бы не сделать файл config.php с
define('SERVER_ROOT', 'C:/wamp/www/site_folder/'); define('SITE_ROOT', 'http://localhost/site_folder/');
и не добавляет его вверху каждого файла.
require_once ('config.php');
когда-то сделанные – никаких проблем в будущем. Если вы перемещаете свой сайт – просто отредактируйте или не перезапишите файл конфигурации.
С комбинацией относительных включает / требует и автозагрузку классов вы можете вообще не иметь SERVER_ROOT
. Что-то вроде вашего SITE_ROOT
принадлежит в файле конфигурации, который включен там, где это необходимо.
Если вы не используете VirtualHosts, тогда $ _SERVER ['DOCUMENT_ROOT'] может не вернуть правильное значение. Для вашего сайта похоже, что он вернет «C: / wamp / www»
Вы можете использовать это простое определение, чтобы установить SERVER_ROOT как текущий каталог, за которым следует слэш (разделитель каталога):
define('SERVER_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);
Затем это должно определить SERVER_ROOT как «C: / wamp / www / site_folder /» для вашего сервера.
Однако это, вероятно, не сработает, если все ваши .php-файлы не содержатся в «C: / wamp / www / site_folder /». Определение вернет различные значения для файлов .php, которые находятся в поддиректории этой папки.
Я использую php_uname('n')
который возвращает имя компьютера, на котором в настоящее время работает php. При этом вы можете создавать конфигурационные файлы для каждого компьютера:
$configFile = 'config/' . php_uname('n') . '.config.php'; if (file_exists($configFile)) { include($configFile); }
Затем вы вводите директивы конфигурации в config / your_computer_name.config.php и config / live_servers_name.config.php.
Создайте один файл в своем docroot. Назовите его settings.inc.
//settings.inc: define('SITE_ROOT', 'site_folder'); require_once (dirname(__FILE__)) . '/st_wd_assets/inc/func_st_wd.php';
Затем в каждом из ваших файлов,
require_once (dirname(__FILE__)) . "/settings.inc";
Не беспокойтесь о корне, а также о css или гиперссылках. Просто представьте их «/».