2011-11-20 48 views
0

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

因此,如果文档根目录为:

/Applications/XAMPP/xamppfiles/htdocs 

而且__FILE__是:

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

它返回:

/Project/application/controllers/index.php 
+0

你尝试检查'的var_dump($ _ SERVER)'的输出?这是基本调试和学习帮助自己的第一步。 – meagar

回答

4

你可能想_SERVER['PHP_SELF']_SERVER['SCRIPT_NAME']

  • PHP_SELF:当前执行的脚本的文件名,与文件根。

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

关于两者之间的区别:

不过,我只注意到在php.general新闻组帖子里有人问有什么不同它们之间。在语义上,没有任何;他们应该包含相同的信息。然而,从历史和技术上讲,都存在。 SCRIPT_NAME在CGI 1.1规范中定义,因此是标准。但是,并非所有的Web服务器都实际实现它,因此它不一定是便携式的。另一方面,PHP_SELF直接由PHP实现,只要您使用PHP进行编程,将始终存在。

途经:http://mwop.net/blog/45-PHP_SELF-versus-SCRIPT_NAME

0
<?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 
?> 
+0

这将如何帮助? – str

2

也许你可以使用

$_SERVER['SCRIPT_NAME']; 

我不知道如果我理解正确的问题,你也可以Concat的根和文件

$_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME']; 
0

没有这样的预定义变量。

但是你可以很容易地从这两得到它,利用作为基本字符串操作功能,strlen()substr()