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?

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.


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"

11
echo basename(__DIR__); will return the current directory name only
echo basename(__FILE__); will return the current file name only

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];

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


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


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)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.