PHP Dapatkan nama direktori saat ini

124

Saya memiliki halaman php di dalam folder di situs saya.

Saya perlu menambahkan nama direktori saat ini ke dalam variabel misalnya:

$myVar = current_directory_name;

Apakah ini mungkin?

Satch3000
sumber

Jawaban:

247
getcwd();

atau

dirname(__FILE__);

atau (PHP5)

basename(__DIR__) 

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

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

Anda bisa menggunakan basename()untuk mendapatkan bagian trailing dari jalan :)

Dalam kasus Anda, saya akan mengatakan Anda kemungkinan besar ingin menggunakan getcwd(), dirname(__FILE__)lebih berguna ketika Anda memiliki file yang perlu menyertakan pustaka lain dan disertakan di pustaka lain.

Misalnya:

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

Di Anda, common.phpAnda perlu menggunakan fungsi di editor.php, jadi Anda gunakan

common.php:

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

main.php:

require_once libs/common.php

Dengan begitu ketika common.php adalah require'ddi main.php, panggilan require_oncedi common.phpakan benar termasuk editor.phpdalam images/editor.phpdaripada mencoba untuk melihat di direktori saat ini di mana main.phpdijalankan.

Andreas Wong
sumber
5
Dan basename(__DIR__)di PHP 5
Xeoncross
Ini memberi saya seluruh jalan. Apakah ada cara untuk mendapatkan nama direktori saja?
Satch3000
13
@ Satch3000basename(getcwd())
Andreas Wong
2
Perhatikan bahwa jika Anda menggunakan penyertaan atau wajib, __DIR__adalah jalur dari file yang disertakan dan BUKAN direktori saat ini
Sebastien Horin
Menggunakan basename(__DIR__) save the day untuk saya. Terima kasih banyak telah berbagi!
Devner
19

Untuk mendapatkan hanya nama direktori tempat skrip dijalankan:

//Path to script: /data/html/cars/index.php
echo basename(dirname(__FILE__)); //"cars"
yesnik
sumber
11
echo basename(__DIR__); will return the current directory name only
echo basename(__FILE__); will return the current file name only
Amir Ul Islam
sumber
2
Selama Anda memiliki PHP 5.3 atau lebih tinggi
Nama Tampilan tidak ada
11

Sebagai contoh

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

THIS_is_the_DIR_I_Want

A Soultion that WORKS:

$url = dirname(\__FILE__);
$array = explode('\\\',$url);
$count = count($array);
echo $array[$count-1];
pengguna2169219
sumber
3
OP tampaknya sudah menerima jawaban atas masalah mereka. Meskipun Anda jelas memberi nilai tambah, apakah Anda perlu melampiaskan furstrasi Anda di sini?
Dutts
stackoverflow.com/help/formatting akan menjelaskan cara membuat hal-hal menjadi berani dengan menghindari penggunaan huruf besar, yang dengan tepat Anda tunjukkan menunjukkan teriakan di internet.
Dutts
7

Sebenarnya saya menemukan solusi terbaik adalah sebagai berikut:

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

jika direktori Anda adalah www \ var \ path \ Current_Path

maka ini mengembalikan Current_path

Andrew
sumber
4
Hati-hati, di server Linux kami tidak menggunakan garis miring terbalik tetapi garis miring. PHP memiliki konstanta ajaib untuk membuatnya lintas platform, lihatPATH_SEPARATOR
renoirb
2

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

libs / images /index.php
Hasil: images

MK2009
sumber
Saya pikir kita semua setuju bahwa Stack Overflow memiliki beberapa pengguna yang paling bertele-tele di internet. Itulah intinya. Mencoba mendapatkan solusi yang akan tetap berfungsi dalam waktu 20 tahun di lokasi yang aneh itu rumit. Jika beberapa dari kita kacau, itu hanya sesuai dengan wilayahnya. :) ps Saya bukan pemilih bawah.
Adam Chalcraft
1

Jika Anda memiliki PATH dan tidak ingin khawatir jika skrip Anda berfungsi di folder yang Anda minati, maka ini akan berhasil:

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