MWN Website
ContactHome

Mkdir di PHP

Mengapa saya gagal membuat folder (di bawah document root) dengan fungsi mkdir() di PHP? Pesan errornya permission denied

Salah satu penyebab adalah Anda masih menjalankan skrip PHP sebagai cgi-USER dan bukan sebagai USER. cgi-USER adalah mekanisme proteksi default di server hosting, agar skrip tidak dapat menulisi document root. Ada 2 solusi: pertama, Anda dapat mengubah setting agar skrip berjalan sebagai USER (lihat di sini).

Solusi kedua, Anda menggunakan fasilitas Kelola File di control panel hosting saja untuk membuat folder tersebut. Atau membuat folder induk dulu dari Kelola File lalu mengubah permissionnya menjadi 775. Kini skrip PHP Anda yang berjalan sebagai cgi-USER tetap dapat membuat subfolder di bawah folder induk tersebut. Contoh, Anda membuat dulu lewat Kelola File folder uploads/ yang diset ke 775. Setelah itu skrip Anda kini dapat membuat subfolder mis: uploads/user1/, uploads/user2/, dll.

Mengapa saya tidak bisa membuat folder dengan permission 0777 atau 0775? Kenapa hasilnya menjadi tetap 0775? Sementara membuat yang 0700 atau 0770 atau 0771 bisa.

Fungsi mkdir() di PHP dipengaruhi oleh umask. Umask adalah bit yang harus mati dalam permission file/folder yang baru dibuat. Umask default pada kebanyakan sistem adalah 0022. Ini artinya, permission file/folder yang baru dibuat tidak dapat lebih permisif dari (0777 & 0022 = 0775).

Jika perlu membuat folder atau file yang permissionnya lebih permisif, maka ada 2 cara yang dapat dilakukan:

  • mkdir() diikuti chmod()

Anda dapat melakukan mkdir() diikuti chmod() untuk mengeset permission mode. Contoh:

mkdir("namadir");
chmod("namadir", 0777); 
  • mengubah umask()

Anda juga bisa mengubah umask() dulu menjadi 0.

umask(0);
mkdir("namadir", 0777);

Note: Mode 0777 sangat tidak aman dan biasanya tidak perlu. Harap mempertimbangkan lagi pilihan Anda ini. Jika aplikasi dapat berjalan tanpa mod 0777, maka gunakan saja 0775.

Link/referensi


Navigasi

Feedback

Artikel Popular

  • Panduan pengguna Spanel
  • Panduan pengguna Spanel 1.3/Email Manager
  • Peraturan dan Persetujuan
  • Panduan pengguna Masterkey
  • Upload files
  • Kontak MWN
  • Tutorial instalasi phpBB
  • PHP
  • Setting SMTP
  • Panduan pengguna Masterkey/Memesan/Konfirmasi pembayaran
  • Tentang shared hosting
  • selengkapnya...
  • Artikel Terbaru

  • Troubleshooting PHPlist
  • Panduan pengguna Spanel 1.3/Crontab editor
  • Panduan pengguna Spanel 1.3/Activity log
  • Panduan pengguna Spanel 1.3/Subversion manager
  • Panduan pengembang Masterkey/Arsitektur
  • Panduan pengembang Masterkey
  • Panduan pengembang Spanel
  • Prosedur pengalihan kontak
  • Troubleshooting email double
  • Panduan pengguna Masterkey/Memesan/Konfirmasi pembayaran/SMS
  • Panduan pengguna Masterkey/Komunikasi SMS
  • selengkapnya...
  • Hak cipta © 2006-2008 PT Master Web Network Konten ditulis dan dikoleksi oleh staf MWN. Artikel-artikel pada situs knowledge base ini dapat dikutip dan disalin secara bebas, namun mohon menyebutkan sumber dengan URL http://kb.masterweb.net/ atau teks "Knowledge Base MWN". MWN tidak bertanggung jawab atas akurasi dan/atau kekinian konten. MWN tidak bertanggung jawab atas komentar-komentar yang dikirim pembaca. Dengan memposting komentar Anda memberi hak penuh pada MWN untuk menampilkan komentar tersebut di manapun dan kapanpun, dan untuk mengedit atau menghapus komentar tersebut dengan cara bagaimanapun dan/atau karena alasan apapun.