Есть ли объяснение этому странному поведению определенной константы?
У меня есть 1 файл (config.php
), который содержит предопределенное значение каталогов, что-то вроде этого
$dir = array
(
'core_dir' => 'includes',
'admin_dir' => 'admin',
'upload_dir' => 'uploads',
'template_dir' => 'templates'
);
define('SCRIPT_DIR', dirname(__FILE__).DIRECTORY_SEPARATOR );
foreach($dir as $name => $location)
{
if ( !is_dir($location) AND is_dir(SCRIPT_DIR.$location))
$dir[$name] = SCRIPT_DIR.$location;
}
define('CORE_DIR',$dir['core_dir'].DIRECTORY_SEPARATOR);
define('ADMIN_DIR',$dir['admin_dir'].DIRECTORY_SEPARATOR);
define('UPLOAD_DIR',$dir['upload_dir'].DIRECTORY_SEPARATOR);
define('TEMPLATE_DIR',$dir['template_dir'].DIRECTORY_SEPARATOR);
формат файла следующим образом
+root_dir
|_index.php
|_config.php
+-includes
| |_javascript.js
+-admin
|_index.php
Этот файл затем включается в index.php и /admin/index.php. Когда я использую эту константу в главном каталоге:
echo $config['site_url'].CORE_DIR.'js/javascript.js';
с $config['site_url']
был полный URL сайта. Работает отлично:
http://localhost/elearning/includes/js/javascript.js
//which means CORE_DIR = includes/
Однако, когда я использую тот же код в каталоге администратора, я получаю:
http://localhost/elearning//home/bam/www-data/elearning/includes/js/javascript.js
//which means CORE_DIR = /home/bam/www-data/elearning/includes/ o.O
Я знаю, что на основании конфигурации, когда относительный путь не найден, он автоматически изменится на абсолютный путь до определенной константы. Но почему один и тот же код, выполняемый на одной и той же машине, дает разные результаты при работе в другой директории?
Что-то не так с моим кодом?
Любая помощь будет оценена.