2010-01-25 5 views
0

J'ai travaillé sur un système de gestion de contenu (nakid) et l'un de mes défis les plus difficiles est la navigation dans les fichiers. Je veux m'assurer que les chemins et les paramètres de fichiers fonctionnent sur les serveurs locaux et distants. En ce moment, ma configuration est à peu près quelque chose comme ceci:Navigation dans les fichiers PHP (local et distant)

first.php (utilisé par toutes les pages):

//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 

La raison pour laquelle je l'ai fait aussi de cette façon parce que je veux le répertoire que ce programme est assis pour être n'importe où sur le serveur ie (/ nakid) (/ cms) (/ admin/cms)

Je suis positif Je fais quelque chose dans le mauvais sens ou il y a une façon plus simple de prendre soin de tous ce.

Si elle aide à regarder de plus près le code et comment tout est utilisé, je l'ai tout à nakid.org

EDIT: Il suffit de réaliser ce que j'ai à nakid.org est un peu différent de celui mon code nouvellement publié, mais la même idée s'applique toujours à ce que je tente de faire.

Répondre

1

En gros, il a l'air bien pour moi.

Vous pouvez donner les noms de variables plus parlant

Rappelez-vous lors de la conversion \ à / dans les noms de chemin (par exemple nakid_root_dir, nakid_relative_webroot et ainsi de suite.): Chaque fois que vous correspondez un autre nom de répertoire à un de ces paramètres, vous devez str_replace("\\","/"...) dans ceux aussi.

Je ne comprends pas ce que vous visez avec $get_dirnakid_2, cependant. Pourquoi allez-vous bousiller mon chemin si j'installe votre application dans un répertoire qui se trouve être nommé /etc/includes/php/nakid?

Quoi qu'il en soit, vous devriez également faire en sorte que ces paramètres puissent être écrasés par l'utilisateur. Parfois, l'utilisateur peut vouloir définir différents paramètres à partir de ce que vous obtenez à partir de DOCUMENT_ROOT et consorts.

+0

J'utilise/includes/php pour trouver le chemin d'installation (first.php se trouve dans/includes/php). Dois-je faire cela d'une manière différente? – kilrizzy

+0

J'ai un moyen pour l'utilisateur de changer le chemin dans le système, mais cette configuration initiale est avant que tout cela ait lieu – kilrizzy

+0

Après coup, si c'est un logiciel que vous voulez publier, vous voudrez peut-être vous débarrasser des mots " local "et" remote ", car ils ne reflètent généralement pas ce que vous faites (les antislashs sont le séparateur de répertoires sur les machines Windows, et les barres obliques sous Unix/Linux et d'autres, mais ça pourrait aussi bien être l'inverse, une machine Windows étant le serveur "distant"). –