Pertanyaan Dapatkan Jalur Direktori Akar dari proyek PHP


Saya memiliki struktur folder ini dalam proyek PHP saya. (ini seperti yang ditunjukkan dalam gerhana)

-MySystem
    +Code
    +Data_Access
    -Public_HTML
        +css
        +js
        +Templates
    -resources

Ketika saya mencoba kode ini

echo $_SERVER['DOCUMENT_ROOT']

output adalah

D: / ruang kerja

Bagaimana saya bisa mendapatkan jalan ke RootDirectory dari sistem (MySystem), tanpa meng-hardcode Nama Folder?


81
2017-12-29 14:00


asal


Jawaban:


Untuk PHP> = 5.3.0 mencoba

PHP konstanta sihir.

__DIR__

Dan buatlah jalan Anda relatif.

Untuk PHP <5.3.0 mencoba

dirname(__FILE__)

113
2017-12-29 14:08



Ketika kamu mengatakan itu

$_SERVER['DOCUMENT_ROOT']

berisi jalur ini:

D:/workspace

Kemudian D: adalah apa yang Anda cari, bukan? Dalam hal ini Anda dapat meledakkan string dengan garis miring dan mengembalikan yang pertama:

$pathInPieces = explode('/', $_SERVER['DOCUMENT_ROOT']);
echo $pathInPieces[0];

Ini akan menampilkan direktori root server.

Memperbarui: Saat Anda menggunakan konstanta DIRECTORY_SEPARATOR bukannya garis miring hardcoded ('/') kode ini juga bekerja di bawah Windows.

Perbarui 2: Itu $_SERVER variabel global tidak selalu tersedia. Pada baris perintah (cli) misalnya. Jadi, Anda harus menggunakan __DIR__ dari pada $_SERVER['DOCUMENT_ROOT']. __DIR__ mengembalikan jalur file php itu sendiri.


43
2017-12-29 14:13



gunakan fungsi PHP:

getcwd()

Mendapat direktori kerja saat ini.


23
2018-04-24 14:58



Saya ingin menunjukkan cara Wordpress menangani ini:

define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );

Karena Wordpress sangat berat digunakan di seluruh web dan juga berfungsi dengan baik secara lokal, saya sangat percaya pada metode ini.


6
2018-04-22 13:32



Anda dapat mencoba: $ _SERVER ['PATH_TRANSLATED']

kutipan:

Filesystem- (bukan dokumen root-) berdasarkan path ke skrip saat ini, setelah server melakukan pemetaan virtual-ke-nyata. Catatan: Mulai dari PHP     4.3.2, PATH_TRANSLATED tidak lagi ditetapkan secara implisit di bawah Apache 2 SAPI berbeda dengan situasi di Apache 1, di mana itu diatur ke     nilai yang sama dengan variabel server SCRIPT_FILENAME jika tidak     dihuni oleh Apache. Perubahan ini dibuat untuk mematuhi CGI     spesifikasi yang PATH_TRANSLATED seharusnya hanya ada jika PATH_INFO     didefinisikan. Pengguna Apache 2 dapat menggunakan AcceptPathInfo = Aktif di dalam httpd.conf     untuk menentukan PATH_INFO.

sumber: php.net/manual


3
2017-12-29 14:07



echo $pathInPieces = explode(DIRECTORY_SEPARATOR , __FILE__);
echo $pathInPieces[0].DIRECTORY_SEPARATOR;

1
2018-05-09 11:00