2012-01-23 18 views
9

Mi piacerebbe ottenere solo il nome della cartella padre di cui uno script è attualmente in esecuzione nella directory?Come ottenere solo il nome della cartella genitore nella directory in cui è in esecuzione uno script in php?

se abbiamo uno script chiamato foo.php con un percorso di "/Users/Somone/Sites/public/foo.php", come posso ottenere semplicemente "pubblico" dal percorso di quel file e non l'intero albero delle directory?

qualsiasi aiuto sarebbe grande.

grazie.

+2

non sono in grado di downvote, questo ha già stato chiesto e ci sono un sacco di link ad esso se fai una ricerca su google. [http://stackoverflow.com/questions/1882044/get-parent-directory-of-running-script] – bowlerae

+0

Apprezzo che mi chiami stupido. Non sono stato in grado di trovare una soluzione a questo, quindi ho postato qui. – Moshe

+0

E ho trovato il post a cui ti sei collegato prima di pubblicare e non lo trovavo utile. – Moshe

risposta

0
substr(__DIR__, strrpos(__DIR__, '/')+1); 
4
echo basename(__DIR__); 

Edit: Sembra che __DIR__ non include il separatore di directory in coda, quindi la chiamata substr() non era necessaria.

14

Il modo più semplice per farlo:

basename(__DIR__); 

Come @mario saggiamente osservato, questo è possibile solo con PHP 5.3+, quindi se sei bloccato con 5,2 o meno ... beh ... dovresti passare a un nuovo host e smettere di usare il software legacy.

+0

Questo è sicuramente il modo più semplice per farlo. grazie – Moshe

+0

Include il percorso per includere il percorso invece del percorso del file in cui sono inclusi ... qualche idea? –

1

Questo ha funzionato per me:

trim(strrchr(__DIR__, DIRECTORY_SEPARATOR), DIRECTORY_SEPARATOR);

+0

Funziona perfettamente, grazie! – redaxmedia

1
//on windows server 
$cur_dir = explode('\\', getcwd()); 
$sector=$cur_dir[count($cur_dir)-2]; 
echo $sector; 
    //on linux server 
$cur_dir = explode('/', getcwd()); 
$sector=$cur_dir[count($cur_dir)-2]; 
echo $sector; 

Cambiare la directory superiore come è necessario: -2, -3, -4

+0

Questo è stato chiesto più di 3 anni fa, e l'utente non ha mostrato alcuno sforzo per risolvere il problema, per favore, sii sempre alla ricerca della data in cui è stata posta la domanda. – Bonatti

Problemi correlati