Dependency PHP sering terasa aman sampai CI tiba-tiba merah. Lokal pakai PHP 8.4, Composer memilih versi package terbaru, test lolos, lalu server staging dengan constraint berbeda mulai mengeluh. Masalahnya bukan cuma package belum siap. Seringnya, Composer belum kamu paksa berpikir seperti environment target.
Composer platform config mengunci versi PHP virtual yang dipakai Composer saat resolve dependency. Dengan begitu, lokal dan CI tidak akan memasang dependency yang belum kompatibel dengan target PHP 8.4 atau versi produksi yang kamu tetapkan.
Kenapa Composer Platform Config Penting untuk PHP 8.4 Readiness?
Composer platform config adalah pengaturan di composer.json yang memberi tahu Composer, “anggap environment ini memakai PHP versi X.” Jadi, Composer tidak cuma melihat PHP yang terpasang di laptop atau runner CI.
Ini krusial saat timmu mulai menyiapkan PHP 8.4. Sebab, banyak library sudah menulis constraint longgar seperti ^8.1, tetapi belum benar-benar bebas warning, deprecation, atau edge case di PHP 8.4.

Masalah yang Sering Terjadi di Lokal dan CI
Tanpa platform config, Composer membaca versi PHP aktif. Akibatnya, dependency resolution bisa berubah saat runner CI, container, atau laptop developer berubah.
- Lokal pakai PHP 8.4, tetapi produksi masih PHP 8.2.
- CI pakai image terbaru, lalu dependency ikut naik diam-diam.
- WordPress plugin build memasang library yang ternyata belum aman untuk hosting klien.
- Lockfile terlihat valid, namun dibuat dengan asumsi platform yang salah.
Kalau kamu pernah melihat build hijau lalu runtime meledak, pola ini familiar. Selain itu, problemnya makin licin karena error sering muncul setelah deploy, bukan saat install.
Cara Mengunci Platform PHP di Composer
Tambahkan blok berikut ke composer.json. Sesuaikan versi dengan target yang ingin kamu validasi.
{
"config": {
"platform": {
"php": "8.4.0"
}
}
}
Setelah itu, jalankan update dependency secara sadar:
composer update --lock
composer install
Dengan konfigurasi ini, Composer akan menolak package yang constraint-nya tidak cocok dengan PHP 8.4. Karena itu, kamu menangkap masalah lebih awal, sebelum masuk staging atau produksi.
Jangan Selalu Set ke Versi Tertinggi
Ini bagian yang sering dilewatkan: versi platform bukan selalu versi paling baru. Kadang, pilihan paling aman adalah mengunci ke versi PHP terendah yang masih kamu support, lalu menjalankan job CI terpisah untuk PHP 8.4.
Misalnya plugin WordPress-mu masih support PHP 8.1 sampai 8.4. Maka dependency resolution utama sebaiknya pakai PHP 8.1, supaya Composer tidak memilih package yang memutus dukungan PHP 8.1. Setelah itu, jalankan test matrix di PHP 8.1, 8.2, 8.3, dan 8.4.
{
"config": {
"platform": {
"php": "8.1.0"
}
}
}
Dengan strategi ini, kamu mendapat dua perlindungan sekaligus. Pertama, dependency tetap kompatibel dengan batas bawah. Kedua, test tetap membuktikan kesiapan runtime PHP 8.4.
Framework Praktis: Resolve Low, Test High
Pakai prinsip sederhana: resolve low, test high. Artinya, Composer memilih dependency berdasarkan PHP minimum support, sementara CI mengetes di semua versi target.
- Resolve low: set
config.platform.phpke versi minimum support. - Test high: jalankan test di PHP 8.4 untuk menemukan deprecation dan behavior change.
- Audit fast: gunakan
composer why-not php 8.4saat package menolak naik. - Ship calm: commit
composer.lock, lalu pakaicomposer installdi CI.

Contoh CI untuk Tim PHP dan WordPress
Di GitHub Actions, kamu bisa menjaga install tetap deterministik, lalu mengetes beberapa versi PHP.
strategy:
matrix:
php: ['8.1', '8.2', '8.3', '8.4']
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
- run: composer validate --strict
- run: composer install --no-interaction --prefer-dist
- run: vendor/bin/phpunit
Kalau build PHP 8.4 gagal, jangan langsung hapus platform config. Sebaliknya, cari dependency yang menahan upgrade.
composer why-not php 8.4
composer show -t
Untuk konteks Composer resmi, cek dokumentasi config platform Composer. Untuk perubahan bahasa, pantau juga rilis PHP 8.4 dan kompatibilitas PHP WordPress.
Hubungkan dengan Praktik Dependency yang Lebih Aman
Platform config makin kuat kalau kamu gabungkan dengan lockfile discipline. Kalau belum, baca juga kenapa lockfile bisa menipu saat CI masih pakai install biasa.
Untuk tim WordPress, ini juga nyambung dengan risiko dependency tersembunyi. Artikel bom dependensi tersembunyi di plugin WordPress membahas kenapa library kecil bisa menjadi risiko besar.
Checklist Cepat Sebelum Naik PHP 8.4
- Set
config.platform.phpsesuai minimum supported PHP. - Commit
composer.lock. - Pakai
composer install, bukancomposer update, di CI. - Tambahkan matrix test sampai PHP 8.4.
- Jalankan
composer validate --strict. - Audit package yang belum mendukung PHP 8.4 dengan
composer why-not.
FAQ
Apakah Composer platform config wajib untuk PHP 8.4?
Tidak wajib, tetapi sangat disarankan. Tanpanya, Composer mengikuti versi PHP aktif, sehingga hasil dependency bisa beda antara lokal, CI, dan produksi.
Harus set platform ke PHP 8.4 atau versi minimum support?
Untuk library atau plugin yang support beberapa versi PHP, set ke versi minimum support. Lalu, test tetap dijalankan sampai PHP 8.4 lewat CI matrix.
Apakah platform config menggantikan test PHP 8.4?
Tidak. Platform config mengontrol dependency resolution. Test PHP 8.4 tetap perlu untuk menangkap deprecation, warning, dan perubahan runtime.
Penutup
Composer platform config bukan pengaturan kosmetik. Ia adalah pagar kecil yang mencegah dependency salah masuk ke build lokal dan CI. Kalau kamu serius menyiapkan PHP 8.4, mulai dari sini dulu, lalu perkuat dengan lockfile, matrix test, dan audit dependency.
Mau update teknis singkat seperti ini langsung masuk inbox? Subscribe newsletter Google kami di bawah ini.



