Pertanyaan Akses file kelas PHP di luar DOCUMENT_ROOT


Saya bingung apa yang dimaksud dengan " praktik terbaik "untuk struktur aplikasi berbasis web PHP. Membaca situs ini ada sejumlah saran. Satu struktur yang sering disebutkan adalah" tidak memiliki file php apa pun di dalam akar dokumen ". Sementara ini terdengar seperti praktik yang baik, saya tidak dapat melihat cara kerjanya - server web tidak mengenali apa pun di luar akar dokumen. Saya berasumsi di sini bahwa document root adalah direktori akses publik, seperti yang ditunjukkan di bawah ini:

app-
  |
  - htdocs - document root
  | |
  | - index.php
  | - css/
  | - images/
  |
  - PHP classes in here/
  - Other PHP classes in here.../

Atau apakah "aplikasi" dalam contoh di atas adalah akar dokumen, dan htdocs dir adalah area struktur situs yang dapat diakses publik?

Mengikuti dari itu, bagaimana cara memastikan akses publik tidak tersedia untuk file dalam dir selain htdocs silahkan?


5
2018-05-13 02:59


asal


Jawaban:


Konsepnya sederhana, terutama jika Anda menggunakan kerangka kerja berbasis pengontrol depan apakah itu milik Anda sendiri atau yang sudah ada (seperti Zend Framework). Ketika semua permintaan datang melalui pengontrol pusat, file yang diperlukan untuk menangani permintaan disertakan jika diperlukan. File yang disertakan tidak harus di root web untuk bekerja. Mereka hanya perlu tersedia untuk controller untuk dimasukkan dan kemudian dieksekusi. Jadi, hanya pengontrol Anda yang harus ada di root web. Segala sesuatu yang lain bisa berada di luar itu.

FYI, ini juga berfungsi dengan aplikasi non-OOP. Anda hanya perlu menyertakan file yang Anda butuhkan di setiap halaman.

Apa yang perlu di root web adalah setiap asest seperti gambar, styelsheets, file javascript, dll yang diminta oleh browser.


7
2018-05-13 03:05



Meskipun benar, webserver tidak akan mengenali apa pun yang "di luar" akar dokumen, yang hanya berlaku untuk file yang diminta oleh PENGGUNA melalui permintaan HTTP.

PHP berjalan di dalam server web, dan tidak memiliki konsep akar dokumen dan URL. ia hanya melihat sistem file yang mendasari sistem operasi host server web, dan data yang masuk dan keluar yang sesuai dengan standar tertentu. Satu-satunya waktu PHP akan terikat oleh beberapa pembatasan berbasis web adalah jika webserver itu sendiri berjalan di dalam penjara chroot.

Dengan demikian, Anda dapat meletakkan file php DI MANA SAJA pada sistem file, dan, dengan asumsi perizinan sudah benar, PHP akan dapat mencapainya dan menjalankannya. Tidak masalah jika file itu terkubur dalam direktori 500 level jauh di suatu tempat di luar akar dokumen - jika dapat dijangkau, PHP dapat menjalankannya.


5
2018-05-13 04:10