我希望能够移动我的代码并能够发现路径以影响某些变量的值。这将放在变量初始化的页面中。
以下是我提出的建议:
$path_array = explode('/', $_SERVER['SCRIPT_FILENAME']);
$out = "";
// -3 represents the number of folders and files to go back to reach the wanted path
for($i=0; $i < count($path_array) - 3; $i++){
$out .= $path_array[$i].'/';
}
然后,作为一个例子,我可以做以下事情:
$dyn_path_1 = $out . 'folder1/';
$dyn_path_2 = $out . 'folder2/something_else/';
$dyn_path_3 = $out . 'folder3/';
是否存在我可能遗漏的内置功能会导致这种功能过时?
ps:这将使我们能够拥有多个代码的工作副本,而无需在检查代码时担心这些变量。
编辑#1:
变量文件的路径:root / folderA / folderB / var.php
在var.php中,我必须回到root,这是2-3步,具体取决于方法。我想知道是否有可能做这样的事情:
echo some_function("../../file_I_know.php");
哪个可以返回:C:/ root /
答案 0 :(得分:0)
__FILE__
,这是您所在文件的绝对路径。而dirname(__FILE__)
可能正是您所需要的。
答案 1 :(得分:0)
看看PHP的“魔术常量”定义,大多数人使用dirname( FILE )来获取最初执行脚本的目录,将其绑定到常量并使用它作为所有其他目录引用的基础。从而使您的脚本位置独立。
这是我通常使用的:
if (!defined('SITE_BASE_PATH')) {
$baseDir = dirname(__FILE__); // Get directory of THIS file
$baseDir = str_replace("\\", "/", $baseDir); // Replace backslashes with forward incase we're in Windows
$baseDir = realpath($baseDir); // Convert relative path to real path (no '..' etc)
$baseDir .= "/"; // Add trailing slash - so that we can append filenames directly
define('SITE_BASE_PATH', $baseDir); // define the constant
}
或简称:
define(SITE_BASE_PATH, realpath(str_replace("\\", "/", dirname(__FILE__))) . '/');
有关详细信息,请参阅以下帮助: http://php.net/manual/en/language.constants.predefined.php
答案 2 :(得分:0)
我认为这是一种防止boollet的方式(在index.php中):
对于公共目录使用此:
realpath (dirname (__FILE__))
用于应用程序库目录:
realpath (dirname (__FILE__). "/../")
希望有所帮助。