我一直致力于内容管理系统(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上的内容与我新发布的代码略有不同,但同样的想法仍然适用于我试图做的事情。
答案 0 :(得分:1)
我不完全明白你想要得到什么,但也许你想要的是getcwd(): http://www.php.net/manual/en/function.getcwd.php
答案 1 :(得分:1)
总的来说,它看起来对我好。
您可能希望为变量提供更多发言名称(例如nakid_root_dir
,nakid_relative_webroot
等等。)
请记住在路径名中将\
转换为/
时:每当您将另一个目录名称与其中一个设置相匹配时,您需要str_replace("\\","/"...)
太
我不明白你对$get_dirnakid_2
的目标是什么。如果我将您的应用程序安装在恰好名为/etc/includes/php/nakid
的目录中,为什么要搞砸我的路径?
无论如何,您应该使这些设置用户也可以覆盖。有时,用户可能希望根据您从DOCUMENT_ROOT和consorts获得的设置设置不同的设置。