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.

Jawaban Singkat / Key Takeaways:
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.

Terminal CI build PHP dengan Composer install
CI harus memakai platform PHP yang eksplisit, bukan menebak dari runner.

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.php ke 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.4 saat package menolak naik.
  • Ship calm: commit composer.lock, lalu pakai composer install di CI.
Server pipeline dependency management untuk PHP dan WordPress
Dependency yang kompatibel di lokal belum tentu aman untuk produksi.

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.php sesuai minimum supported PHP.
  • Commit composer.lock.
  • Pakai composer install, bukan composer 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.

About the Author

Dzul Qurnain

Suka nonton Anime, ngoding dan bagi-bagi tips kalau tahu.. Oh iya, suka baca ( tapi yang menarik menurutku aja)... Praktisi WordPress, web development, SEO, dan server administration yang membagikan tutorial teknis dan catatan implementasi nyata.

View All Articles