Saya memiliki struktur folder ini dalam proyek PHP saya. (ini seperti yang ditunjukkan pada gerhana)
-MySystem
+Code
+Data_Access
-Public_HTML
+css
+js
+Templates
-resources
Saat saya mencoba kode ini
echo $_SERVER['DOCUMENT_ROOT']
keluarannya
D: / ruang kerja
Bagaimana saya bisa mendapatkan jalur ke RootDirectory sistem ( MySystem
), tanpa hardcode Nama Folder?
__DIR__
. Ini relatif terhadap file itu sendiri, jadi jika di include, di dalam sub direktori, itu tidak akan mengembalikan hanya direktori root Anda.Saat kamu mengatakan itu
berisi jalur ini:
Lalu
D:
apa yang Anda cari, bukan? Dalam hal ini Anda dapat meledakkan string dengan garis miring dan mengembalikan yang pertama:Ini akan menampilkan direktori root server.
Pembaruan: Saat Anda menggunakan konstanta,
DIRECTORY_SEPARATOR
bukan garis miring yang di-hardcode ('/'
), kode ini juga berfungsi di bawah Windows.Memperbarui 2: The
$_SERVER
variabel global tidak selalu tersedia. Pada baris perintah (cli) misalnya. Jadi, Anda harus menggunakan__DIR__
bukan$_SERVER['DOCUMENT_ROOT']
.__DIR__
mengembalikan jalur file php itu sendiri.sumber
__DIR__
bukan$_SERVER['DOCUMENT_ROOT']
.gunakan fungsi PHP:
getcwd()
Mendapat direktori kerja saat ini.
sumber
Saya ingin menunjukkan cara Wordpress menangani ini:
Karena Wordpress sangat berat digunakan di seluruh web dan juga berfungsi dengan baik secara lokal, saya sangat percaya pada metode ini.
sumber
Anda dapat mencoba:
$_SERVER['PATH_TRANSLATED']
mengutip:
sumber: php.net/manual
sumber
sumber
Ringkasan
Contoh ini mengasumsikan Anda selalu tahu di mana folder root apache adalah '/ var / www /' dan Anda mencoba mencari jalur folder berikutnya (misalnya '/ var / www / my_website_folder'). Ini juga berfungsi dari skrip atau browser web, itulah sebabnya ada kode tambahan.
Kode PHP7
Contoh
Keluaran:
Rincian:
Pada dasarnya pertama-tama mencoba untuk mendapatkan DOCUMENT_ROOT jika itu berisi '/ var / www /' kemudian gunakan, jika tidak, dapatkan dir saat ini (yang banyak ada di dalam proyek) dan dapatkan nilai jalur berikutnya berdasarkan jumlah jalur $ root. Catatan: menambahkan pernyataan rtrim untuk memastikan jalur kembali diakhiri dengan '/' dalam semua kasus. Itu tidak memeriksa apakah itu membutuhkan lebih besar dari / var / www / itu juga dapat mengembalikan / var / www / sebagai respons yang memungkinkan.
sumber