Lewatkan ke konten utama

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