获取index.php脚本所在的文件夹

获取index.php脚本所在的文件夹,php,.htaccess,dir,Php,.htaccess,Dir,我正在使用AltoRouter为我的php应用程序匹配路由。显然,即使调用了index.php,如果应用程序不在域根目录中,您也必须设置$router->setBasePath(“/path/to/script”) 我需要一个收集子文件夹的函数(如果应用程序在子文件夹中)。例如,如果路径是/dir,有人调用www.domain.com/dir,我可以知道它的/dir,并调用$router->setBasePath(“/dir”)您可以在.htaccess中使用此规则: RewriteEngine

我正在使用
AltoRouter
为我的php应用程序匹配路由。显然,即使调用了
index.php
,如果应用程序不在域根目录中,您也必须设置
$router->setBasePath(“/path/to/script”)


我需要一个收集子文件夹的函数(如果应用程序在子文件夹中)。例如,如果路径是
/dir
,有人调用
www.domain.com/dir
,我可以知道它的
/dir
,并调用
$router->setBasePath(“/dir”)

您可以在.htaccess中使用此规则:

RewriteEngine On

RewriteCond $0#%{REQUEST_URI} ^([^#]*)#(.*)\1$
RewriteRule ^.*$ - [E=BASE:%2]
这将把“${ENV:BASE}”设置为该.htaccess所在的任何子目录

然后在PHP中,您可以使用:

$_SERVER["BASE"]

如果.htaccess位于
/dir1/

中,则会将其设置为
/dir/
,如果dirname是根目录,例如,
$thisDirectory='www'
,但在这种情况下,我们不需要
->setBasepath()
或者更糟糕的是,它位于
/dir/
中,但域映射到
/dir/
,在这种情况下,我们也不需要
->setBasePath
如果它位于
文档根目录中,那么
$\u服务器[“BASE”]
将是
/
是的,我终于找到了答案,如果我可以,我可以两次找到答案。如果URL是
/base/whatever/path
,但如果URL是
/base/index.php/whatever/path
。我们如何确保index.php是可选的?@tylersn:你能就此提出一个新问题吗?你能澄清一下吗?例如:W下面是正在执行的脚本?当前文件的基本路径是否足够?正如@anubhava在下面的回答中所说,我想知道调用.htaccess的基本目录