Навигация по файлам PHP (локальная + удаленная) - PullRequest
0 голосов
/ 25 января 2010

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

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

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

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

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

РЕДАКТИРОВАТЬ: Только что понял, что у меня на nakid.org немного отличается от моего недавно опубликованного кода, но та же идея все еще применима к тому, что я пытаюсь сделать.

Ответы [ 2 ]

1 голос
/ 25 января 2010

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

Возможно, вы захотите дать переменным больше говорящих имен (например, nakid_root_dir, nakid_relative_webroot и т. Д.)

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

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

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

1 голос
/ 25 января 2010

Я не совсем понимаю, что вы пытаетесь получить, но, возможно, вы ищете getcwd ():
http://www.php.net/manual/en/function.getcwd.php

...