Is there any explanation of this strange behavior of defined constant?
I have 1 file (config.php
) which hold predefined value of directories, something like this
$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);
aşağıdaki gibi dosya düzeni
+root_dir
|_index.php
|_config.php
+-includes
| |_javascript.js
+-admin
|_index.php
Bu dosya daha sonra index.php ve / admin / index.php dahil. Ben ana dizindeki bu sabiti kullandığınızda:
echo $config['site_url'].CORE_DIR.'js/javascript.js';
$config['site_url']
Tam site URL oldu ile. Bu mükemmel çalışıyor:
http://localhost/elearning/includes/js/javascript.js
//which means CORE_DIR = includes/
Ben admin dizini altında same kodunu kullanırken Ancak, ben alıyorum:
http://localhost/elearning//home/bam/www-data/elearning/includes/js/javascript.js
//which means CORE_DIR = /home/bam/www-data/elearning/includes/ o.O
Ben göreli yolu bulunamadı zaman config dayalı, otomatik before tanımlanmış sabit mutlak yolu değişeceğini biliyorum. Farklı bir dizin üzerinde çalışırken Ama nasıl aynı makinede aynı kod çalıştırmak gelen farklı çıktı verecektir?
Benim koduyla yanlış bir şey var mı?
Herhangi bir yardım mutluluk duyacağız.