2010-01-25 4 views
0

Я работаю над системой управления контентом (nakid), и одна из моих самых сложных проблем - это файловая навигация. Я хочу, чтобы пути и настройки файлов работали на локальных и удаленных серверах. Сейчас моя установка довольно много что-то вроде этого:PHP File Navigation (Local + Remote)

first.php (используется всеми страницами):

//Set paths to nakid root 
$core['dir_cur'] = dirname(__FILE__); 
$core['dir_root'] = $_SERVER['DOCUMENT_ROOT']; 
//Detect current nakid directory 
$get_dirnakid_1 = str_replace("\\","/",dirname(__FILE__));//If on local 
$get_dirnakid_2 = str_replace("/includes/php","",$get_dirnakid_1); 
$get_dirnakid_3 = str_replace($_SERVER['DOCUMENT_ROOT'],"",$get_dirnakid_2); 
//remove first "/" 
if(substr($get_dirnakid_3, 0,1) == "/"){ 
$get_dirnakid_3 = substr($get_dirnakid_3, 1); 
} 
//Set some default vars 
$core['dir_nakid_path'] = $get_dirnakid_3; 
$core['dir_nakid'] = $core['dir_root']."/".$core['dir_nakid_path'];//We need to get system() for this real value - below 

Причина, я также сделал это таким образом, потому что я хочу каталог, что эта программа (/ admin/cms)

Я уверен, что я делаю что-то не так, или что есть более простой способ позаботиться обо всех это.

Если это помогает получить более близкий взгляд на код и как используется все, что я все это вверх на nakid.org

EDIT: Просто понял, что я имею в nakid.org немного отличается мой недавно опубликованный код, но та же идея по-прежнему применяется к тому, что я пытаюсь сделать.

ответ

1

По большому счету, это выглядит хорошо для меня.

Вы можете дать переменные более говоря имена

Помните при преобразовании \ в / в именах путей (например, nakid_root_dir, nakid_relative_webroot и так далее.): Всякий раз, когда вы подходите другое имя каталога к одному из тех, настройки, вам необходимо указать str_replace("\\","/"...).

Я не понимаю, на что вы нацеливаете $get_dirnakid_2. Почему вы будете испортить мой путь, если я установлю ваше приложение в каталог, который называется /etc/includes/php/nakid?

В любом случае, вы должны сделать эти настройки пользователями также непригодными для записи. Иногда пользователь может захотеть установить разные настройки из того, что вы получаете от DOCUMENT_ROOT и супругов.

+0

Я использую/includes/php, чтобы узнать, что путь установки (first.php находится в/includes/php). Должен ли я делать это по-другому? – kilrizzy

+0

У меня есть способ для пользователя изменить путь в системе, но эта первоначальная настройка до того, как произойдет какое-либо из этих событий. – kilrizzy

+0

Загадка, если это программное обеспечение, которое вы хотите опубликовать, возможно, захотите избавиться от слов " local "и" remote ", поскольку они обычно не отражают то, что вы делаете (обратные косые черты - это разделитель каталогов на машинах Windows, а также слэши на Unix/Linux и другие, но это может быть так же хорошо, Windows-машина, являющаяся «удаленным» сервером). –