PHP Ruft den Namen des aktuellen Verzeichnisses ab

123

Ich habe eine PHP-Seite in einem Ordner auf meiner Website.

Ich muss den Namen des aktuellen Verzeichnisses in eine Variable einfügen, zum Beispiel:

$myVar = current_directory_name;

Ist das möglich?

Satch3000
quelle

Antworten:

246
getcwd();

oder

dirname(__FILE__);

oder (PHP5)

basename(__DIR__) 

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

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

Sie können verwenden basename(), um den nachfolgenden Teil des Pfades zu erhalten :)

In Ihrem Fall würde ich sagen , Sie sind am ehesten zu verwenden suchen getcwd(), dirname(__FILE__)ist nützlicher , wenn Sie eine Datei haben , dass der Bedarf eine andere Bibliothek aufzunehmen und in einer anderen Bibliothek enthalten.

Z.B:

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

In Ihrem müssen common.phpSie Funktionen in verwenden editor.php, damit Sie verwenden

common.php::

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

main.php::

require_once libs/common.php

Auf diese Weise , wenn common.php ist require'din main.php, der Ruf require_oncein common.phpenthält korrekt editor.phpin images/editor.phpanstatt zu versuchen , in aktuellem Verzeichnis zu suchen , wo main.phpausgeführt wird.

Andreas Wong
quelle
5
Und basename(__DIR__)in PHP 5
Xeoncross
Das gibt mir den ganzen Weg. Gibt es eine Möglichkeit, nur den Verzeichnisnamen zu erhalten?
Satch3000
13
@ Satch3000basename(getcwd())
Andreas Wong
2
Beachten Sie, dass, wenn Sie ein Include oder ein Erforderliches verwenden, __DIR__der Pfad der enthaltenen Datei und NICHT das aktuelle Verzeichnis ist
Sebastien Horin
Mit basename(__DIR__) hat mir den Tag gerettet. Vielen Dank für das Teilen!
Devner
18

So erhalten Sie nur den Namen des Verzeichnisses, in dem das Skript ausgeführt wurde:

//Path to script: /data/html/cars/index.php
echo basename(dirname(__FILE__)); //"cars"
yesnik
quelle
11
echo basename(__DIR__); will return the current directory name only
echo basename(__FILE__); will return the current file name only
Ameer Ul Islam
quelle
2
Solange Sie PHP 5.3 oder höher haben
Anzeigename fehlt
11

Beispielsweise

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

DIESES_ist_das_DIR_I_WOLLEN

Eine Soultion, die FUNKTIONIERT:

$url = dirname(\__FILE__);
$array = explode('\\\',$url);
$count = count($array);
echo $array[$count-1];
user2169219
quelle
3
Das OP scheint bereits eine Antwort auf sein Problem akzeptiert zu haben. Müssen Sie hier Ihre Furstrationen entlüften, obwohl Sie einen deutlichen Mehrwert haben?
Dutts
stackoverflow.com/help/formatting erklärt, wie man Dinge mutig macht , ohne die Verwendung von Kappen, auf die Sie zu Recht hingewiesen haben, was das Schreien im Internet bedeutet.
Dutts
7

Eigentlich fand ich die beste Lösung die folgende:

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

Wenn Ihr Verzeichnis www \ var \ path \ Current_Path lautet

dann gibt dies Current_path zurück

Andrew
quelle
4
Achtung, auf Linux-Servern verwenden wir keinen Backslash, sondern den Slash. PHP hat eine magische Konstante, um es plattformübergreifend zu machen, siehePATH_SEPARATOR
Renoirb
2

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

libs / images /index.php
Ergebnis: images

MK2009
quelle
Nun, ich denke, wir sind uns alle einig, dass Stack Overflow einige der pedantischsten Benutzer im Netz hat. Das ist irgendwie der Punkt. Der Versuch, Lösungen zu finden, die in 20 Jahren in einem seltsamen Gebietsschema noch funktionieren, ist schwierig. Wenn einige von uns vermasselt sind, gehört das einfach zum Territorium. :) ps Ich war nicht der Downwähler.
Adam Chalcraft
1

Wenn Sie PATH haben und keine Bedenken haben möchten, ob Ihr Skript in dem Ordner funktioniert, an dem Sie interessiert sind, funktioniert dies wie folgt:

basename(parse_url($_GET['dir_link'])['path'],PHP_URL_PATH)
Dziamid Harbatsevich
quelle