[英]Dynamically finding paths, is there a better way?
我希望能够四处移动代码并能够发现路径以影响某些变量的值。 这将放置在初始化变量的页面中。
这是我想出的:
$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中,我必须回到根目录,这取决于方法,需要2-3步。 我想知道是否可以做这样的事情:
echo some_function("../../file_I_know.php");
可能返回:C:/ root /
嘿,您可能想尝试__FILE__
,这是您所在文件的绝对路径。 dirname(__FILE__)
可能正是您所需要的。
看一下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/zh/language.constants.predefined.php
我认为这是最安全的方法(在index.php中):
对于公共目录,请使用以下命令: realpath (dirname (__FILE__))
对于应用程序基本目录: realpath (dirname (__FILE__). "/../")
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.