Karena senang membuat aplikasi aplikasi sederhana ternyata menemukan masalah ketika aplikasi dipublis di publik tidak sesuai dengan yang sudah diruning pada server lokal, bingung juga menemukan permasalahannya, sehingga terbantukan solusinya oleh AI (AI membantu).
Jadi begini permasalahannya, saya punya vps (virtual private server) yang disewa pada salah satu penyedia hosting, vps tersebut saya gunakan untuk berbagai aplikasi yang berjalan pada webserver. vps ini menggunakan sistem Linux Ubuntu Server 20.04 LTE sedangkan layanan web dan databasenya mengunakan apache dan MySQl.
Salah satu aplikasi yang diupload di webserver yaitu mengirimkan gambar (upload) gambar yang tidak tersimpan pada direktori/folder yang disediakan, seperti kutipan kode dibawah ini :
$filename = $_FILES['bukti']['name'];
$tmp_name = $_FILES['bukti']['tmp_name'];
$type1 = explode('.', $filename);$type2 = $type1[1];
$newname = 'bukti' . time() . '.' . $type2;
$tipe_diizinkan = array('jpg', 'jpeg', 'png', 'gif');
if (!in_array($type2, $tipe_diizinkan)) {echo '<script>alert("Format file tidak diizinkan"></script>';} else {move_uploaded_file($tmp_name, './bukti/' . $newname);
}
Nah bingung juga awalnya,
ternyata permasalahannya terdapat pada mengenai izin (permission) dan kode numerik yang umum digunakan untuk file dan direktori pada web server Apache di Ubuntu yang diterapkan pada web server.
Konsep Dasar Linux
Izin di Linux (dan Ubuntu) dibagi menjadi tiga kategori untuk setiap file atau direktori :
Pemilik (Owner): Pengguna yang memiliki file atau direktori tersebut.
Grup (Group): Grup yang memiliki file atau direktori tersebut.
Lainnya (Others): Semua pengguna lain di sistem.
Izin | Deskripsi | Kode Numerik |
r (Read) | Membaca isi file, atau daftar isi direktori. | 4 |
w (Write) | Mengubah atau menghapus file, atau menambah/menghapus file dalam direktori. | 2 |
x (Execute) | Menjalankan file (jika itu skrip), atau masuk/menjelajahi direktori. | 1 |
Kode Izin Apache
Izin biasanya direpresentasikan dalam format tiga digit oktal (numerik), di mana setiap digit mewakili izin untuk Pemilik, Grup, dan Lainnya secara berurutan.
1. Izin File (Website Content Files)
File-file seperti HTML, CSS, gambar, atau skrip PHP (kecuali yang perlu dieksekusi secara langsung) umumnya membutuhkan izin :
| Kategori | Izin | Kode Numerik |
| Pemilik | Baca/Tulis (rw-) | 6 (4+2+0) |
| Grup | Baca (r--) | 4 (4+0+0) |
| Lainnya | Baca (r--) | 4 (4+0+0) |
Kode izin untuk izin 644 (rw-r--r--)
- Pemilik : dapat membaca dan menulis
- Grup : hanya dapat membaca
- Lainnya : hanya dapat membaca
| Kategori | Izin | Kode Numerik |
| Pemilik | Baca/Tulis/Jalankan (rwx) | 7 (4+2+1) |
| Grup | Baca/Jalankan (r-x) | 5 (4+0+1) |
| Lainnya | Baca/Jalankan (r-x) | 5 (4+0+1) |
- Pemilik: Dapat membaca, menulis, dan menjelajahi.
- Grup (
www-data): Dapat membaca dan menjelajahi (untuk mengakses file di dalamnya). - Lainnya: Dapat membaca dan menjelajahi.
| Kategori | Izin | Kode Numerik |
| Pemilik | Baca/Tulis/Jalankan (rwx) | 7 (4+2+1) |
| Grup | Baca/Tulis/Jalankan (rwx) | 7 (4+2+1) |
| Lainnya | Baca/Jalankan (r-x) atau tanpa akses (---) | 5 (4+0+1) atau 0 (0+0+0) |
Kode Izin untuk Direktori Writable: 775 (rwxrwxr-x) atau 770 (rwxrwx---)
- 775: Memberikan izin tulis ke grup (
www-data) dan baca/jalankan ke lainnya. - 770: Lebih aman, hanya memberikan izin tulis ke Pemilik dan Grup (
www-data).
Perintah untuk Mengubah Izin dan Kepemilikan
www-data adalah user dan group Apache, dan /var/www/html adalah document rootMengubah Kepemilikan (User dan Group)
Langkah pertama dan paling penting untuk memastikan Apache dapat membaca file.
sudo chown -R www-data:www-data /var/www/html
Mengubah Izin
Setelah kepemilikan diatur, Anda dapat menerapkan izin yang disarankan:
# Atur izin direktori ke 755 (rwxr-xr-x)
sudo find /var/www/html -type d -exec chmod 755 {} +
# Atur izin file ke 644 (rw-r--r--)
sudo find /var/www/html -type f -exec chmod 644 {} +
Izin Khusus untuk Direktori Writable
Jika memiliki folder upload (misalnya /var/www/html/uploads) yang perlu ditulis oleh Apache:
# Atur izin folder uploads ke 775 (rwxrwxr-x)
sudo chmod 775 /var/www/html/uploads
Izin Khusus untuk Direktori Writable
Jika memiliki folder upload (misalnya /var/www/html/uploads) yang perlu ditulis oleh Apache :
# Atur izin folder uploads ke 775 (rwxrwxr-x)
sudo chmod 775 /var/www/html/uploads
#memastikan apache dapat membaca file
chown -R www-data:www-data /var/www/html/arsip/bukti
#memberikan izin tulis ke Pemilik dan Grup
chmod -R 770 /var/www/html/arsip/bukti
Nah, setelah memberikan konfigurasi diatas pada terminal server, akhirnya proses upload file gambar di aplikasi yang dibuat berjalan..😁
0 komentar:
Posting Komentar