Troubleshooting Instalasi Maatwebsite Excel
Permasalahan
- Perintah composer require maatwebsite/excel gagal karena ekstensi PHP ext-zip belum tersedia.
- Konfigurasi zip.ini sudah ada pada direktori CLI dan FPM, tetapi berkas modul zip.so belum ditemukan pada lokasi modul PHP.
- Perintah apt update sebelumnya gagal karena /usr/bin/apt-key tidak tersedia.
- Setelah masalah apt-key ditangani, APT masih sempat menampilkan masalah kunci tanda tangan untuk PPA PHP Ondřej Surý.
- Izin eksekusi /bin/dash juga tidak sesuai sehingga proses APT yang berjalan sebagai pengguna _apt tidak dapat menjalankan shell.
1.Periksa versi PHP dan ekstensi ZIP
php -v
php -m | grep -i zip
php --ri zip
Jika ZIP tidak muncul atau PHP melaporkan ekstensi tidak tersedia, periksa apakah paket php8.1-zip sudah terpasang dan apakah berkas modul ZIP tersedia.
2.Pulihkan izin eksekusi /bin/dash
Pada sesi troubleshooting ini, /bin/dash ditemukan memiliki izin terlalu ketat sehingga proses APT tidak dapat menjalankannya. Setelah memastikan bahwa /bin/dash adalah shell sistem yang benar, izin eksekusinya diperbaiki:
ls -l /bin/dash
chmod 755 /bin/dash
ls -l /bin/dash
Catatan: perubahan izin berkas sistem harus dilakukan dengan hati-hati. Pastikan path dan target symlink benar sebelum menjalankan chmod.
3.Pulihkan /usr/bin/apt-key bila hilang
Pada server ini, /usr/bin/apt-key tidak ditemukan. Berkas tersebut dipulihkan dari paket APT yang diunduh dan diekstrak. Ringkasan proses yang digunakan pada sesi ini:
dpkg -s apt
# Paket apt yang sesuai versi/arsitektur diunduh
# Isi paket diekstrak, lalu usr/bin/apt-key dipulihkan ke /usr/bin/apt-key
Peringatan keamanan: log menunjukkan paket apt_2.4.13_amd64.deb diunduh dari mirror. Hash/checksum paket tidak terlihat diverifikasi terhadap metadata repositori bertanda tangan pada catatan ini. Untuk server produksi, verifikasi asal paket dan integritasnya melalui repositori resmi serta metadata bertanda tangan sebelum menggunakan paket sistem hasil unduhan.
4.Perbaiki kunci PPA PHP
Setelah APT dapat berjalan, pembaruan daftar paket masih menghadapi masalah kunci PPA Ondřej Surý. Kunci diambil dari Ubuntu keyserver, fingerprint diperiksa, lalu disimpan dalam format keyring:
curl -fsSL \
'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB8DC7E53946656EFBCE4C1DD71DAEAAB4AD4CAB6' \
-o /tmp/ondrej-php.asc
gpg --show-keys --with-fingerprint /tmp/ondrej-php.asc
mkdir -p /etc/apt/keyrings
gpg --dearmor --yes -o /etc/apt/keyrings/ondrej-php.gpg /tmp/ondrej-php.asc
chmod 644 /etc/apt/keyrings/ondrej-php.gpg
apt update
Fingerprint yang tercatat pada sesi ini adalah B8DC 7E53 9466 56EF BCE4 C1DD 71DA EAAB 4AD4 CAB6. Pastikan fingerprint cocok dengan sumber resmi yang dapat dipercaya sebelum mempercayai kunci.
Hasil yang diharapkan: apt update selesai tanpa kesalahan GPG. Peringatan bahwa sejumlah paket dapat ditingkatkan bukan berarti semua paket tersebut harus langsung diperbarui.
5.Periksa kandidat paket ZIP dan simulasi instalasi
apt-cache policy php8.1-zip php8.1-common
apt-get -s install php8.1-zip
Simulasi membantu melihat paket yang akan dipasang, diperbarui, atau dihapus sebelum perubahan benar-benar dilakukan. Pada sesi ini, simulasi menunjukkan 15 paket PHP akan diperbarui, php8.1-zip akan dipasang, dan tidak ada paket yang dihapus. Karena paket PHP berasal dari PPA yang sama, versi paket-paket terkait ikut diselaraskan.
Jangan melakukan full-upgrade hanya karena APT menyebut banyak paket dapat diperbarui. Tinjau rencana perubahan terlebih dahulu, terutama pada server produksi.
6.Pasang ekstensi PHP ZIP
apt install php8.1-zip
Dalam sesi ini, instalasi memperbarui komponen PHP 8.1 dari versi 8.1.31 menjadi 8.1.34 dan memasang php8.1-zip. APT menampilkan pesan bahwa tautan 20-zip.ini sudah ada; pesan tersebut tidak menggagalkan instalasi karena modul ZIP kemudian berhasil aktif.
php -m | grep -i zip
php --ri zip
php -v
Hasil yang terlihat pada sesi ini: zip tampil pada daftar modul, informasi menunjukkan "Zip => enabled", dan PHP CLI menjadi versi 8.1.34.
7.Pasang Maatwebsite Excel pada proyek Laravel
cd /var/www/html/project-aplikasi
composer require maatwebsite/excel
Composer kemudian berhasil memasang maatwebsite/excel versi 3.1.70 beserta dependensi yang dibutuhkan, termasuk phpoffice/phpspreadsheet. Laravel juga menjalankan package discovery dan menampilkan maatwebsite/excel sebagai DONE.
Ringkasan Penanganan Troubleshoting:
|
Masalah |
Tindakan |
Verifikasi |
|
Composer gagal karena ext-zip |
Pasang php8.1-zip setelah APT pulih |
php --ri zip |
|
/usr/bin/apt-key hilang |
Pulihkan berkas dari paket APT yang sesuai; validasi integritas paket |
apt update |
|
/bin/dash tidak dapat dieksekusi |
Periksa target dan pulihkan izin yang sesuai |
ls -l /bin/dash |
|
Kunci PPA PHP bermasalah |
Periksa fingerprint dan pasang keyring PPA |
apt update tanpa error GPG |
|
Banyak paket dapat diperbarui |
Simulasikan instalasi dan tinjau daftar perubahan |
apt-get -s install php8.1-zip |
|
Paket Excel belum terpasang |
Jalankan Composer dari direktori proyek Laravel |
composer show maatwebsite/excel |