foto nggak muncul di halaman. walaupun foto sudah ada.
Error 404 pada folder `/storage/` di server produksi (AApanel) biasanya disebabkan oleh salah satu dari dua hal ini:
### 1. Simbolik Link Belum Dibuat atau Salah
Di server AApanel, Anda harus menjalankan perintah link secara manual di dalam folder project Anda:
php artisan storage:link
*Jika muncul pesan "The [public/storage] link already exists", hapus dulu link yang lama lalu buat lagi:*
rm public/storage php artisan storage:link
### 2. File "Conversions" Belum Tergenerate
Karena URL-nya mengandung kata `/conversions/`, ini berarti Anda menggunakan **Spatie Media Library**. Gambar aslinya mungkin ada, tapi versi kecil (*thumbnail*) nya belum dibuat oleh server.
**Penyebabnya biasanya:**
1. **Ekstensi PHP Kurang**: Media Library butuh `GD` atau `ImageMagick`.
* Cek di AApanel > App Store > PHP 8.2 > Setting > **Install extensions**.
* Pastikan `gd` dan `imagemagick` sudah terinstal (berwarna hijau).
2. **Antrian (Queue) Belum Jalan**: Jika Anda menggunakan sistem Queue, gambar tidak akan langsung diproses. Coba jalankan ini di terminal server untuk memprosesnya:
php artisan media-library:regenerate
*(Ketik `yes` jika ditanya ingin memproses semua)*.
### 3. Izin Folder (Permissions)
Pastikan Nginx bisa membaca folder tersebut. Jalankan ini di terminal server:
chown -R www:www storage public/storage chmod -R 775 storage
**Cara Cek Cepat:**
Coba buka direktori ini lewat File Manager AApanel:
`storage/app/public/1/conversions/`
Apakah file `favicon-thumbnail.webp` ada di sana?
- **Jika ADA tapi 404**: Masalahnya di Simbolik Link (Langkah 1).
- **Jika TIDAK ADA**: Masalahnya di Pembuatan Gambar (Langkah 2).
Silakan cek folder tersebut dulu, apakah filenya memang sudah ada secara fisik?
step #11
ketika saya deploy ke server, saya dapat pesan error pada console:
GET https://bootstrap.sebatam.com/livewire/livewire.js?id=646f9d24 net::ERR_ABORTED 404 (Not Found)
solusi: jalankan perintah:
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
jika masih error, jalan perintah:
jika livewire belum jalan di server, maka lakukan perintah berikut:
php artisan livewire:publish --assets
Karena Laravel juga menulis session ke database, maka folder `database/` dan file `database.sqlite` harus writable oleh user `www` di aaPanel.
Jalankan ini di server:
cd /www/wwwroot/notes.sebatam.com/mynotes chown www:www database/database.sqlite chmod 664 database/database.sqlite chown www:www database chmod 775 database chown -R www:www storage bootstrap/cache chmod -R 775 storage bootstrap/cache
Kalau masih error, set lebih aman seluruh folder `database` ke `www`:
chown -R www:www /www/wwwroot/notes.sebatam.com/mynotes/database chmod -R 775 /www/wwwroot/notes.sebatam.com/mynotes/database
Lalu bersihkan cache Laravel:
php artisan optimize:clear
Cek juga file SQLite memang ada:
ls -l /www/wwwroot/notes.sebatam.com/mynotes/database/database.sqlite
Kalau file belum ada, buat:
touch /www/wwwroot/notes.sebatam.com/mynotes/database/database.sqlite chown www:www /www/wwwroot/notes.sebatam.com/mynotes/database/database.sqlite chmod 664 /www/wwwroot/notes.sebatam.com/mynotes/database/database.sqlite
Intinya untuk error ini, minimal yang harus writable oleh `www`:
- `database/database.sqlite`
- folder `database`
- `storage`
- `bootstrap/cache`
note: permission untuk file dan folder setelah clone atau pull dari github