PHP Mevcut dizinin adını alır


124

Web sitemdeki bir klasörün içinde bir php sayfam var.

Geçerli dizinin adını bir değişkene eklemem gerekiyor, örneğin:

$myVar = current_directory_name;

Mümkün mü?

Yanıtlar:


247
getcwd();

veya

dirname(__FILE__);

veya (PHP5)

basename(__DIR__) 

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

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

basename()Yolun son kısmını almak için kullanabilirsiniz :)

Senin durumda, büyük olasılıkla kullanmak isteyen söyleyebil getcwd(), dirname(__FILE__)sen ihtiyaçlarını başka kütüphane dahil etmek ve başka bir kütüphanede yer aldığını bir dosya var olduğunda daha yararlıdır.

Örneğin:

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

Gözlerinde farklı common.phpİçinde işlevlerini kullanmak gerekir editor.phpkullanmak, böylece

common.php:

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

main.php:

require_once libs/common.php

Common.php olduğunda Böylece require'diçinde main.php, çağrı require_onceiçinde common.phpolacak doğru kapsamaktadır editor.phpiçinde images/editor.phpyerine nerede geçerli dizinde bakmaya çalışmakla main.phpçalıştırılır.


5
Ve basename(__DIR__)PHP 5'te
Xeoncross

Bu bana tüm yolu veriyor. Sadece dizin adını almanın bir yolu var mı?
Satch3000

13
@ Satch3000basename(getcwd())
Andreas Wong

2
Bir dahil etme veya gerekli __DIR__olanı kullanırsanız, dahil edilen dosyanın yolu olup geçerli dizin DEĞİLDİR
Sebastien Horin

Günümü kullanmak basename(__DIR__) benim için kurtardı. Paylaştığın için çok teşekkürler!
Devner

19

Yalnızca komut dosyasının çalıştırıldığı dizinin adını almak için:

//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
PHP 5.3 veya sonraki bir sürüme sahip olduğunuz sürece
Görünen Ad

11

Örneğin

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

THIS_is_the_DIR_I_Want

ÇALIŞAN BİR Ruh:

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

3
OP, sorunlarının cevabını çoktan kabul etmiş görünüyor. Açıkça değer katmış olmanıza rağmen, furstrasyonlarınızı burada havalandırmanız gerekiyor mu?
Dutts

stackoverflow.com/help/formatting , internette bağırmak anlamına gelen, haklı olarak belirttiğiniz büyük harf kullanımından kaçınarak işleri nasıl cesur hale getireceğinizi açıklayacaktır .
Dutts

7

Aslında en iyi çözümü buldum:

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

dizininiz www \ var \ yol \ ise dizininiz Current_Path ise

bu, Current_path'i döndürür


4
Dikkat edin, Linux sunucularında ters eğik çizgi değil, eğik çizgi kullanıyoruz. PHP'nin çapraz platform yapmasını sağlayacak sihirli bir sabiti var, bkz.PATH_SEPARATOR
renoirb

2

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

libs / images /index.php
Sonuç: resimler


Bence Stack Overflow'un internetteki en bilgiçlikçi kullanıcılardan bazılarına sahip olduğu konusunda hemfikiriz. İşte mesele bu. Garip bir yerel ayarda 20 yıl sonra hala işe yarayacak çözümler bulmaya çalışmak zordur. Bazılarımız batırırsa, bu sadece bölgeye uygun. :) ps Ben aşağı oy veren değildim.
Adam Chalcraft

1

PATH'iniz varsa ve betiğiniz ilgilendiğiniz klasörde çalışıyorsa endişelenmek istemiyorsanız, bu işe yarar:

basename(parse_url($_GET['dir_link'])['path'],PHP_URL_PATH)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.