Composer menyelesaikan ketergantungan, dan itu menuntut memori serta akses jaringan — keduanya terbatas di hosting bersama. Ia juga mengunduh kode langsung ke server produksi, dan di sanalah tempat terakhir yang Anda inginkan untuk menemukan bahwa sebuah paket telah berubah.
Bentuk yang lebih baik
Selesaikan ketergantungannya di tempat yang punya sumber daya, lalu kirim hasilnya. Dengan begitu server tidak pernah menjalankan Composer sama sekali.
# on your machine or in CI
composer install --no-dev --optimize-autoloader --classmap-authoritative
rsync -az --delete vendor/ user@server:/var/www/site/vendor/
- --no-dev — kerangka pengujian dan alat pelacak galat tidak berurusan dengan produksi.
- --optimize-autoloader — peta kelas alih-alih pencarian di sistem berkas, dan percepatan yang bisa diukur.
- --classmap-authoritative — sama sekali tidak ada panggilan stat cadangan. Pakai hanya bila tidak ada yang membangkitkan kelas saat program berjalan.
Kalau memang harus dijalankan di server
php -d memory_limit=-1 /usr/local/bin/composer install --no-dev --optimize-autoloader
Penghalang yang biasa muncul adalah batas memori. Menaikkannya hanya untuk perintah itu membuat Anda tak perlu menaikkannya bagi seluruh situs.
Masukkan berkas kunci ke repositori, jangan pernah direktori vendor
Menerapkan tanpa jendela pecah
Menyalin berkas ke direktori yang sedang melayani berarti sebagian permintaan melihat setengah dari kode barunya. Bangunlah ke direktori baru lalu pindahkan tautan simboliknya, sehingga perubahannya utuh sekali jadi.
ln -sfn /var/www/releases/2026-09-05 /var/www/current
sudo systemctl reload php8.3-fpm # clear the opcache of the old paths
