这个PHP常量是否存在


Does this PHP constant exists?

是否有一个PHP常量自动从__FILE__中删除$_SERVER['DOCUMENT_ROOT'] ?

所以如果文档根是:

/Applications/XAMPP/xamppfiles/htdocs

__FILE__

/Applications/XAMPP/xamppfiles/htdocs/Project/application/controllers/index.php

它返回:

/Project/application/controllers/index.php

您可能需要_SERVER['PHP_SELF']_SERVER['SCRIPT_NAME']

  • PHP_SELF:当前执行脚本的文件名,相对于文档根目录。

  • SCRIPT_NAME:包含当前脚本的路径。这对于需要指向自己的页面很有用。__FILE__常量包含当前(即包含)文件的完整路径和文件名。

关于两者的区别:

然而,我刚刚注意到一个帖子在php。一般新闻组,有人问他们之间有什么区别。语义上,没有;它们应该包含相同的信息。然而,从历史上和技术上讲,确实存在。SCRIPT_NAME在CGI 1.1规范中定义,因此是一个标准。然而,并不是所有的web服务器都实现了它,因此它不一定是可移植的。另一方面,PHP_SELF是由PHP直接实现的,只要你用PHP编程,它就会一直存在。

通过:http://mwop.net/blog/45-PHP_SELF-versus-SCRIPT_NAME

也许你可以使用

$_SERVER['SCRIPT_NAME'];

我不知道我理解的问题是否正确,你也可以将根目录和文件

连接起来。
$_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME'];
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "'n";
echo $path_parts['basename'], "'n";
echo $path_parts['extension'], "'n";
echo $path_parts['filename'], "'n"; // since PHP 5.2.0
?> 

没有这样的预定义变量。

但是您可以很容易地从这两个中获得它,使用基本的字符串操作函数,如strlen()substr()