PHP根目录的绝对路径
我不敢相信PHP对于这个简单的问题没有一个简单的解决方案。ASP.NET有一个~符号来处理这个问题,并从根级别开始处理一切。我的问题是:PHP根目录的绝对路径,php,relative-path,absolute-path,Php,Relative Path,Absolute Path,我不敢相信PHP对于这个简单的问题没有一个简单的解决方案。ASP.NET有一个~符号来处理这个问题,并从根级别开始处理一切。我的问题是: localhost/MySite -->Admin -- Edit.php -->Class -- class.EditInfo.php -->Texts -- MyInfo.txt --ShowInfo.php 在class.EditInfo.php中,我正在访问MyInfo.t
localhost/MySite
-->Admin
-- Edit.php
-->Class
-- class.EditInfo.php
-->Texts
-- MyInfo.txt
--ShowInfo.php
在class.EditInfo.php中,我正在访问MyInfo.txt,因此我定义了一个相对路径“./text/MyInfo.txt”。然后,我在Admin/Edit.php中创建了一个EditInfo对象,并访问了text/MyInfo.txt,效果很好
但是现在我必须在ShowInfo.php中创建一个EditInfo对象并访问text/MyInfo.txt,下面是出现的问题。当我在类中使用相对路径时,每当我创建objEditInfo并尝试访问MyInfo.txt时,就会出现“文件不存在”错误
现在我正在从ASP.NET中寻找与“~/text/MyInfo.txt”等效的内容。有什么类似的吗???或者我必须用一些if/else条件设置路径吗
更新:
我使用了$\u SERVER['DOCUMENT\u ROOT']。我使用的是我实际网站所在的子文件夹。因此,我不得不使用$\u SERVER['DOCUMENT\u ROOT'].“/mySite”&然后将其余地址(“/text/MyInfo.php”)添加到其中。在php中,有一个全局变量,包含与服务器相关的各种详细信息。它被称为$\u服务器。它还包含根目录:
$_SERVER['DOCUMENT_ROOT']
唯一的问题是,此变量中的条目由web服务器提供,不能保证所有web服务器都提供这些条目。鉴于您的设置,最好的方法是定义一个描述站点根路径的常量。您可以在应用程序的根目录下创建文件
config.php
:
<?php
define('SITE_ROOT', dirname(__FILE__));
$file_path = SITE_ROOT . '/Texts/MyInfo.txt';
?>
然后在每个入口点脚本中包含
config.php
,并在代码中引用SITE\u ROOT
,而不是给出相对路径。在全局配置文件中使用dirname(\uu FILE\uu)
。使用ShowInfo.php
中的define
创建一个具有根的绝对路径的常量:
define('ROOTPATH', __DIR__);
或PHP您可以访问变量:
<?php
$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/subdir1/yourdocument.txt";
?>
启动任何自定义PHP项目时,最好使用引导文件,根据从
$\u服务器提取的值,将最常用的路径定义为常量。这将使您的项目或项目的一部分迁移到另一台服务器或服务器上的另一个目录变得非常容易
这是我定义根路径的方式:
define("LOCAL_PATH_ROOT", $_SERVER["DOCUMENT_ROOT"]);
define("HTTP_PATH_ROOT", isset($_SERVER["HTTP_HOST"]) ? $_SERVER["HTTP_HOST"] : (isset($_SERVER["SERVER_NAME"]) ? $_SERVER["SERVER_NAME"] : '_UNKNOWN_'));
路径LOCAL\u path\u ROOT
是文档根目录。当通过HTTP访问同一路径时,路径HTTP\u path\u ROOT
是等效的
此时,可以使用以下代码将任何本地路径转换为HTTP路径:
str_replace(LOCAL_PATH_ROOT, RELATIVE_PATH_ROOT, $my_path)
如果要确保与基于Windows的服务器兼容,还需要将目录分隔符替换为URL分隔符:
str_replace(LOCAL_PATH_ROOT, RELATIVE_PATH_ROOT, str_replace(DIRECTORY_SEPARATOR, '/', $my_path))
以下是我用于的完整引导代码:
如果将上述代码添加到您自己的项目中,此时输出所有用户常量(您可以使用get_defined_constants(true)
执行此操作),应该会得到如下结果:
array (
'LOCAL_PATH_BOOTSTRAP' => '/var/www/libraries/backend/Data/examples',
'URL_SEPARATOR' => '/',
'DS' => '/',
'PS' => ':',
'US' => '/',
'RELATIVE_PATH_ROOT' => '',
'LOCAL_PATH_ROOT' => '/var/www',
'HTTP_PATH_ROOT' => 'localhost:8888',
'RELATIVE_PATH_BASE' => '/libraries/backend/Data/examples',
'RELATIVE_PATH_APP' => '/libraries/backend/Data',
'RELATIVE_PATH_LIBRARY' => '/libraries/backend/Data/vendor',
'RELATIVE_PATH_HELPERS' => '/libraries/backend/Data/examples',
'RELATIVE_PATH_TEMPLATE' => '/libraries/backend/Data/examples/templates',
'RELATIVE_PATH_CONFIG' => '/libraries/backend/Data/examples/config',
'RELATIVE_PATH_PAGES' => '/libraries/backend/Data/examples/pages',
'RELATIVE_PATH_ASSET' => '/libraries/backend/Data/examples/assets',
'RELATIVE_PATH_ASSET_IMG' => '/libraries/backend/Data/examples/assets/img',
'RELATIVE_PATH_ASSET_CSS' => '/libraries/backend/Data/examples/assets/css',
'RELATIVE_PATH_ASSET_JS' => '/libraries/backend/Data/examples/assets/js',
'LOCAL_PATH_BASE' => '/var/www/libraries/backend/Data/examples',
'LOCAL_PATH_APP' => '/var/www/libraries/backend/Data',
'LOCAL_PATH_LIBRARY' => '/var/www/libraries/backend/Data/vendor',
'LOCAL_PATH_HELPERS' => '/var/www/libraries/backend/Data/examples',
'LOCAL_PATH_TEMPLATE' => '/var/www/libraries/backend/Data/examples/templates',
'LOCAL_PATH_CONFIG' => '/var/www/libraries/backend/Data/examples/config',
'LOCAL_PATH_PAGES' => '/var/www/libraries/backend/Data/examples/pages',
'LOCAL_PATH_ASSET' => '/var/www/libraries/backend/Data/examples/assets',
'LOCAL_PATH_ASSET_IMG' => '/var/www/libraries/backend/Data/examples/assets/img',
'LOCAL_PATH_ASSET_CSS' => '/var/www/libraries/backend/Data/examples/assets/css',
'LOCAL_PATH_ASSET_JS' => '/var/www/libraries/backend/Data/examples/assets/js',
'HTTP_PATH_BASE' => 'localhost:8888/libraries/backend/Data/examples',
'HTTP_PATH_APP' => 'localhost:8888/libraries/backend/Data',
'HTTP_PATH_LIBRARY' => false,
'HTTP_PATH_HELPERS' => false,
'HTTP_PATH_TEMPLATE' => false,
'HTTP_PATH_CONFIG' => false,
'HTTP_PATH_PAGES' => false,
'HTTP_PATH_ASSET' => 'localhost:8888/libraries/backend/Data/examples/assets',
'HTTP_PATH_ASSET_IMG' => 'localhost:8888/libraries/backend/Data/examples/assets/img',
'HTTP_PATH_ASSET_CSS' => 'localhost:8888/libraries/backend/Data/examples/assets/css',
'HTTP_PATH_ASSET_JS' => 'localhost:8888/libraries/backend/Data/examples/assets/js',
'REQUEST_QUERY' => false,
'REQUEST_METHOD' => 'GET',
'REQUEST_STATUS' => false,
'REQUEST_PROTOCOL' => 'http://',
'REQUEST_PATH' => '/',
'REQUEST_PATH_STRIP_QUERY' => '/',
'PRODUCTION' => false,
'PAGE_PATH_DEFAULT' => '/index',
'PAGE_PATH' => '/index',
)
使用dirname()的最佳方法。因为服务器['DOCUMENT_ROOT']不能运行所有服务器,并且还返回服务器运行路径
$root = dirname( __FILE__ );
$root = __DIR__;
$filePath = realpath(dirname(__FILE__));
$rootPath = realpath($_SERVER['DOCUMENT_ROOT']);
$htmlPath = str_replace($root, '', $filePath);
这是我找到根起点的方法。
在根目录下创建一个名为mainpath.php的文件
<?php
## DEFINE ROOTPATH
$check_data_exist = "";
$i_surf = 0;
// looking for mainpath.php at the aktiv folder or higher folder
while (!file_exists($check_data_exist."mainpath.php")) {
$check_data_exist .= "../";
$i_surf++;
// max 7 folder deep
if ($i_surf == 7) {
return false;
}
}
define("MAINPATH", ($check_data_exist ? $check_data_exist : ""));
?>
对我来说,这是找到它们的最好、最简单的方法。
^^创建一个具有根的绝对路径的常数,如果您使用的是PHP>=5.3,则使用它可能是重复的或仅使用DIR。阅读所有这些回复后,我感觉自己像个傻瓜。无论如何,您能举个例子说明我如何在.PHP文件中使用该站点的根吗?我可以简单地这样写:SITE\u root.“text/Info.txt”?当然,一旦定义了它。但请记住,返回的路径没有尾随斜杠,因此在连接到它的任何字符串中都需要有一个前导斜杠:SITE\u ROOT.“/text/Info.txt”
。我发现这个方法的唯一问题是,您仍然需要返回配置文件的相对路径,因此最终还是使用相对路径。您最好将$\u服务器['DOCUMENT\u ROOT']定义为常量,然后使用$path=DOCROOT./subdir1/yourdocument.txt';
我们可以使用href(标记)的根路径吗?@BBeta不清楚您的意思,但在使用它的地方应该没有任何区别。上面的代码只是将路径存储为字符串/常量。然后您可以调用它并在适当的地方使用它。但这不会使它在从Admin/Edit.php访问时失败吗?uu_u_u_u_u将指向/path/to/site/Admin,因此它将尝试访问/path/to/site/Admin/text,而不是/path/to/site/text。
defined('LOCAL_PATH_BOOTSTRAP') || define("LOCAL_PATH_BOOTSTRAP", __DIR__);
// -----------------------------------------------------------------------
// DEFINE SEPERATOR ALIASES
// -----------------------------------------------------------------------
define("URL_SEPARATOR", '/');
define("DS", DIRECTORY_SEPARATOR);
define("PS", PATH_SEPARATOR);
define("US", URL_SEPARATOR);
// -----------------------------------------------------------------------
// DEFINE ROOT PATHS
// -----------------------------------------------------------------------
define("RELATIVE_PATH_ROOT", '');
define("LOCAL_PATH_ROOT", $_SERVER["DOCUMENT_ROOT"]);
define("HTTP_PATH_ROOT",
isset($_SERVER["HTTP_HOST"]) ?
$_SERVER["HTTP_HOST"] : (
isset($_SERVER["SERVER_NAME"]) ?
$_SERVER["SERVER_NAME"] : '_UNKNOWN_'));
// -----------------------------------------------------------------------
// DEFINE RELATIVE PATHS
// -----------------------------------------------------------------------
define("RELATIVE_PATH_BASE",
str_replace(LOCAL_PATH_ROOT, RELATIVE_PATH_ROOT, getcwd()));
define("RELATIVE_PATH_APP", dirname(RELATIVE_PATH_BASE));
define("RELATIVE_PATH_LIBRARY", RELATIVE_PATH_APP . DS . 'vendor');
define("RELATIVE_PATH_HELPERS", RELATIVE_PATH_BASE);
define("RELATIVE_PATH_TEMPLATE", RELATIVE_PATH_BASE . DS . 'templates');
define("RELATIVE_PATH_CONFIG", RELATIVE_PATH_BASE . DS . 'config');
define("RELATIVE_PATH_PAGES", RELATIVE_PATH_BASE . DS . 'pages');
define("RELATIVE_PATH_ASSET", RELATIVE_PATH_BASE . DS . 'assets');
define("RELATIVE_PATH_ASSET_IMG", RELATIVE_PATH_ASSET . DS . 'img');
define("RELATIVE_PATH_ASSET_CSS", RELATIVE_PATH_ASSET . DS . 'css');
define("RELATIVE_PATH_ASSET_JS", RELATIVE_PATH_ASSET . DS . 'js');
// -----------------------------------------------------------------------
// DEFINE LOCAL PATHS
// -----------------------------------------------------------------------
define("LOCAL_PATH_BASE", LOCAL_PATH_ROOT . RELATIVE_PATH_BASE);
define("LOCAL_PATH_APP", LOCAL_PATH_ROOT . RELATIVE_PATH_APP);
define("LOCAL_PATH_LIBRARY", LOCAL_PATH_ROOT . RELATIVE_PATH_LIBRARY);
define("LOCAL_PATH_HELPERS", LOCAL_PATH_ROOT . RELATIVE_PATH_HELPERS);
define("LOCAL_PATH_TEMPLATE", LOCAL_PATH_ROOT . RELATIVE_PATH_TEMPLATE);
define("LOCAL_PATH_CONFIG", LOCAL_PATH_ROOT . RELATIVE_PATH_CONFIG);
define("LOCAL_PATH_PAGES", LOCAL_PATH_ROOT . RELATIVE_PATH_PAGES);
define("LOCAL_PATH_ASSET", LOCAL_PATH_ROOT . RELATIVE_PATH_ASSET);
define("LOCAL_PATH_ASSET_IMG", LOCAL_PATH_ROOT . RELATIVE_PATH_ASSET_IMG);
define("LOCAL_PATH_ASSET_CSS", LOCAL_PATH_ROOT . RELATIVE_PATH_ASSET_CSS);
define("LOCAL_PATH_ASSET_JS", LOCAL_PATH_ROOT . RELATIVE_PATH_ASSET_JS);
// -----------------------------------------------------------------------
// DEFINE URL PATHS
// -----------------------------------------------------------------------
if (US === DS) { // needed for compatibility with windows
define("HTTP_PATH_BASE", HTTP_PATH_ROOT . RELATIVE_PATH_BASE);
define("HTTP_PATH_APP", HTTP_PATH_ROOT . RELATIVE_PATH_APP);
define("HTTP_PATH_LIBRARY", false);
define("HTTP_PATH_HELPERS", false);
define("HTTP_PATH_TEMPLATE", false);
define("HTTP_PATH_CONFIG", false);
define("HTTP_PATH_PAGES", false);
define("HTTP_PATH_ASSET", HTTP_PATH_ROOT . RELATIVE_PATH_ASSET);
define("HTTP_PATH_ASSET_IMG", HTTP_PATH_ROOT . RELATIVE_PATH_ASSET_IMG);
define("HTTP_PATH_ASSET_CSS", HTTP_PATH_ROOT . RELATIVE_PATH_ASSET_CSS);
define("HTTP_PATH_ASSET_JS", HTTP_PATH_ROOT . RELATIVE_PATH_ASSET_JS);
} else {
define("HTTP_PATH_BASE", HTTP_PATH_ROOT .
str_replace(DS, US, RELATIVE_PATH_BASE));
define("HTTP_PATH_APP", HTTP_PATH_ROOT .
str_replace(DS, US, RELATIVE_PATH_APP));
define("HTTP_PATH_LIBRARY", false);
define("HTTP_PATH_HELPERS", false);
define("HTTP_PATH_TEMPLATE", false);
define("HTTP_PATH_CONFIG", false);
define("HTTP_PATH_PAGES", false);
define("HTTP_PATH_ASSET", HTTP_PATH_ROOT .
str_replace(DS, US, RELATIVE_PATH_ASSET));
define("HTTP_PATH_ASSET_IMG", HTTP_PATH_ROOT .
str_replace(DS, US, RELATIVE_PATH_ASSET_IMG));
define("HTTP_PATH_ASSET_CSS", HTTP_PATH_ROOT .
str_replace(DS, US, RELATIVE_PATH_ASSET_CSS));
define("HTTP_PATH_ASSET_JS", HTTP_PATH_ROOT .
str_replace(DS, US, RELATIVE_PATH_ASSET_JS));
}
// -----------------------------------------------------------------------
// DEFINE REQUEST PARAMETERS
// -----------------------------------------------------------------------
define("REQUEST_QUERY",
isset($_SERVER["QUERY_STRING"]) && $_SERVER["QUERY_STRING"] != '' ?
$_SERVER["QUERY_STRING"] : false);
define("REQUEST_METHOD",
isset($_SERVER["REQUEST_METHOD"]) ?
strtoupper($_SERVER["REQUEST_METHOD"]) : false);
define("REQUEST_STATUS",
isset($_SERVER["REDIRECT_STATUS"]) ?
$_SERVER["REDIRECT_STATUS"] : false);
define("REQUEST_PROTOCOL",
isset($_SERVER["HTTP_ORIGIN"]) ?
substr($_SERVER["HTTP_ORIGIN"], 0,
strpos($_SERVER["HTTP_ORIGIN"], '://') + 3) : 'http://');
define("REQUEST_PATH",
isset($_SERVER["REQUEST_URI"]) ?
str_replace(RELATIVE_PATH_BASE, '',
$_SERVER["REQUEST_URI"]) : '_UNKNOWN_');
define("REQUEST_PATH_STRIP_QUERY",
REQUEST_QUERY ?
str_replace('?' . REQUEST_QUERY, '', REQUEST_PATH) : REQUEST_PATH);
// -----------------------------------------------------------------------
// DEFINE SITE PARAMETERS
// -----------------------------------------------------------------------
define("PRODUCTION", false);
define("PAGE_PATH_DEFAULT", US . 'index');
define("PAGE_PATH",
(REQUEST_PATH_STRIP_QUERY === US) ?
PAGE_PATH_DEFAULT : REQUEST_PATH_STRIP_QUERY);
array (
'LOCAL_PATH_BOOTSTRAP' => '/var/www/libraries/backend/Data/examples',
'URL_SEPARATOR' => '/',
'DS' => '/',
'PS' => ':',
'US' => '/',
'RELATIVE_PATH_ROOT' => '',
'LOCAL_PATH_ROOT' => '/var/www',
'HTTP_PATH_ROOT' => 'localhost:8888',
'RELATIVE_PATH_BASE' => '/libraries/backend/Data/examples',
'RELATIVE_PATH_APP' => '/libraries/backend/Data',
'RELATIVE_PATH_LIBRARY' => '/libraries/backend/Data/vendor',
'RELATIVE_PATH_HELPERS' => '/libraries/backend/Data/examples',
'RELATIVE_PATH_TEMPLATE' => '/libraries/backend/Data/examples/templates',
'RELATIVE_PATH_CONFIG' => '/libraries/backend/Data/examples/config',
'RELATIVE_PATH_PAGES' => '/libraries/backend/Data/examples/pages',
'RELATIVE_PATH_ASSET' => '/libraries/backend/Data/examples/assets',
'RELATIVE_PATH_ASSET_IMG' => '/libraries/backend/Data/examples/assets/img',
'RELATIVE_PATH_ASSET_CSS' => '/libraries/backend/Data/examples/assets/css',
'RELATIVE_PATH_ASSET_JS' => '/libraries/backend/Data/examples/assets/js',
'LOCAL_PATH_BASE' => '/var/www/libraries/backend/Data/examples',
'LOCAL_PATH_APP' => '/var/www/libraries/backend/Data',
'LOCAL_PATH_LIBRARY' => '/var/www/libraries/backend/Data/vendor',
'LOCAL_PATH_HELPERS' => '/var/www/libraries/backend/Data/examples',
'LOCAL_PATH_TEMPLATE' => '/var/www/libraries/backend/Data/examples/templates',
'LOCAL_PATH_CONFIG' => '/var/www/libraries/backend/Data/examples/config',
'LOCAL_PATH_PAGES' => '/var/www/libraries/backend/Data/examples/pages',
'LOCAL_PATH_ASSET' => '/var/www/libraries/backend/Data/examples/assets',
'LOCAL_PATH_ASSET_IMG' => '/var/www/libraries/backend/Data/examples/assets/img',
'LOCAL_PATH_ASSET_CSS' => '/var/www/libraries/backend/Data/examples/assets/css',
'LOCAL_PATH_ASSET_JS' => '/var/www/libraries/backend/Data/examples/assets/js',
'HTTP_PATH_BASE' => 'localhost:8888/libraries/backend/Data/examples',
'HTTP_PATH_APP' => 'localhost:8888/libraries/backend/Data',
'HTTP_PATH_LIBRARY' => false,
'HTTP_PATH_HELPERS' => false,
'HTTP_PATH_TEMPLATE' => false,
'HTTP_PATH_CONFIG' => false,
'HTTP_PATH_PAGES' => false,
'HTTP_PATH_ASSET' => 'localhost:8888/libraries/backend/Data/examples/assets',
'HTTP_PATH_ASSET_IMG' => 'localhost:8888/libraries/backend/Data/examples/assets/img',
'HTTP_PATH_ASSET_CSS' => 'localhost:8888/libraries/backend/Data/examples/assets/css',
'HTTP_PATH_ASSET_JS' => 'localhost:8888/libraries/backend/Data/examples/assets/js',
'REQUEST_QUERY' => false,
'REQUEST_METHOD' => 'GET',
'REQUEST_STATUS' => false,
'REQUEST_PROTOCOL' => 'http://',
'REQUEST_PATH' => '/',
'REQUEST_PATH_STRIP_QUERY' => '/',
'PRODUCTION' => false,
'PAGE_PATH_DEFAULT' => '/index',
'PAGE_PATH' => '/index',
)
$root = dirname( __FILE__ );
$root = __DIR__;
$filePath = realpath(dirname(__FILE__));
$rootPath = realpath($_SERVER['DOCUMENT_ROOT']);
$htmlPath = str_replace($root, '', $filePath);
<?php
## DEFINE ROOTPATH
$check_data_exist = "";
$i_surf = 0;
// looking for mainpath.php at the aktiv folder or higher folder
while (!file_exists($check_data_exist."mainpath.php")) {
$check_data_exist .= "../";
$i_surf++;
// max 7 folder deep
if ($i_surf == 7) {
return false;
}
}
define("MAINPATH", ($check_data_exist ? $check_data_exist : ""));
?>