PHP Ottieni il nome della directory corrente


124

Ho una pagina php all'interno di una cartella del mio sito web.

Devo aggiungere il nome della directory corrente in una variabile, ad esempio:

$myVar = current_directory_name;

È possibile?

Risposte:


247
getcwd();

o

dirname(__FILE__);

o (PHP5)

basename(__DIR__) 

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

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

Puoi usare basename()per ottenere la parte finale del percorso :)

Nel tuo caso, direi che molto probabilmente stai cercando di utilizzare getcwd(),dirname(__FILE__) è più utile quando hai un file che deve includere un'altra libreria ed è incluso in un'altra libreria.

Per esempio:

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

Nel tuo common.phpdevi usare le funzioni in editor.php, quindi usi

common.php:

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

main.php:

require_once libs/common.php

In questo modo, quando common.php è require'din main.php, la chiamata di require_oncein common.phpincluderà correttamente editor.phpin images/editor.phpinvece di cercare di cercare nella directory corrente in cui main.phpviene eseguito.


5
E basename(__DIR__)in PHP 5
Xeoncross

Questo mi sta dando l'intero percorso. C'è un modo per ottenere solo il nome della directory?
Satch3000

13
@ Satch3000basename(getcwd())
Andreas Wong

2
Nota che se usi un include o un obbligatorio, __DIR__è il percorso del file incluso e NON la directory corrente
Sebastien Horin

L'utilizzo ha basename(__DIR__) salvato la giornata per me. Grazie mille per la condivisione!
Devner

19

Per ottenere solo il nome della directory in cui è stato eseguito lo script:

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


11

Per esempio

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

THIS_is_the_DIR_I_Want

Un'anima che FUNZIONA:

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

3
Il PO sembra aver già accettato una risposta al loro problema. Sebbene tu abbia chiaramente aggiunto valore, hai bisogno di sfogare le tue furstration qui?
Dutts

stackoverflow.com/help/formatting spiegherà come rendere le cose audaci evitando l'uso di maiuscole, che hai giustamente sottolineato denota gridare su Internet.
Dutts,

7

In realtà ho trovato che la soluzione migliore è la seguente:

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

se la tua directory è www \ var \ path \ Current_Path

quindi questo restituisce Current_path


4
Attenzione, nei server Linux non usiamo la barra rovesciata ma la barra. PHP ha una costante magica per renderlo multipiattaforma, vediPATH_SEPARATOR
renoirb

2

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

libs / images /index.php
Risultato: immagini


Beh, penso che saremmo tutti d'accordo sul fatto che Stack Overflow ha alcuni degli utenti più pedanti della rete. Questo è un po 'il punto. Cercare di ottenere soluzioni che funzionino ancora tra 20 anni in un ambiente strano è complicato. Se alcuni di noi sono incasinati, va bene con il territorio. :) ps non ero il down-voter.
Adam Chalcraft

1

Se hai PATH e non vuoi preoccuparti se il tuo script funziona nella cartella che ti interessa, allora questo funziona:

basename(parse_url($_GET['dir_link'])['path'],PHP_URL_PATH)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.