PHP获取当前目录的名称


123

我的网站上的文件夹内有一个php页面。

我需要将当前目录的名称添加到变量中,例如:

$myVar = current_directory_name;

这可能吗?

Answers:


246
getcwd();

要么

dirname(__FILE__);

或(PHP5)

basename(__DIR__) 

http://php.net/manual/zh/function.getcwd.php

http://php.net/manual/zh/function.dirname.php

您可以basename()用来获取路径的结尾部分:)

对于您的情况,我想说您最有可能希望使用getcwd()dirname(__FILE__)当您的文件需要包含另一个库并且包含在另一个库中时,它会更有用。

例如:

main.php
libs/common.php
libs/images/editor.php

在您中,common.php您需要使用中的函数editor.php,因此您可以使用

common.php

require_once dirname(__FILE__) . '/images/editor.php';

main.php

require_once libs/common.php

这样,当的common.php是require'dmain.php,的通话require_oncecommon.php会包含正确editor.phpimages/editor.php,而不是试图在当前目录下查找其中main.php运行。


5
basename(__DIR__)在PHP 5
Xeoncross

这给了我整条路。有没有只获取目录名称的方法?
Satch3000

13
@ Satch3000basename(getcwd())
Andreas Wong

2
请注意,如果您使用包含或必填,__DIR__则是包含文件的路径,而不是当前目录的路径
Sebastien Horin 2015年

使用basename(__DIR__) 为我节省了一天。多谢分享!
Devner

18

要仅获取执行脚本的目录的名称,请执行以下操作:

//Path to script: /data/html/cars/index.php
echo basename(dirname(__FILE__)); //"cars"


11

例如

Your Path = /home/serverID_name/www/your_route_Dir/

THIS_is_the_DIR_I_Want

运作的灵魂:

$url = dirname(\__FILE__);
$array = explode('\\\',$url);
$count = count($array);
echo $array[$count-1];

3
OP似乎已经接受了他们问题的答案。尽管您已经明确地增加了价值,但您是否需要在这里发泄烦恼?
2013年

stackoverflow.com/help/formatting将解释如何避免使用大写来使事情大胆,您已经很正确地指出了大写是在互联网上大喊大叫。
Dutts 2013年

7

实际上,我发现最好的解决方案如下:

$cur_dir = explode('\\', getcwd());
echo $cur_dir[count($cur_dir)-1];

如果您的目录是www \ var \ path \ Current_Path

然后返回Current_path


4
请注意,在Linux服务器中,我们不使用反斜杠,而是使用斜杠。PHP具有使其跨平台的神奇常数,请参阅PATH_SEPARATOR
renoirb 2014年

2

$myVar = str_replace('/', '', $_SERVER[REQUEST_URI]);

libs / images /index.php
结果:images


好吧,我想我们都同意Stack Overflow拥有一些网络上最花哨的用户。这就是重点。试图获得在怪异的语言环境中仍能在20年后仍然有效的解决方案是棘手的。如果我们中的一些人搞砸了,那就与领土有关。:) ps我不是选民。
亚当·查尔克拉夫特

1

如果您具有PATH并且不想让您的脚本在您感兴趣的文件夹中工作,则可以这样做:

basename(parse_url($_GET['dir_link'])['path'],PHP_URL_PATH)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.