Lewati persyaratan PHP komposer

117

Kami menggunakan PHPCI dan komposer. Server yang menjalankan PHPCI menggunakan PHP 5.3.

Untuk proyek kami menambahkan Facebook PHP SDK, menggunakan komposer. Ini membutuhkan PHP 5.4. Komposer dipicu oleh PHPCI dan dieksekusi. Tetapi karena server CI baru saja mendapatkan pembuat PHP 5.3 gagal dengan pesan kesalahan:

facebook/php-sdk-v4 4.0.9 requires php >=5.4.0 -> no matching package found.

Ini membiarkan gagal membangun saya di PHPCI, tentu saja.

Apakah ada kemungkinan untuk melewati persyaratan ini? Mungkin dengan menambahkan opsi ke composer.json? Atau parameter untuk panggilan composer.phar?

Armin
sumber

Jawaban:

284

Saya telah menemukan opsi:

composer install --ignore-platform-reqs

Abaikan persyaratan platform (paket php & ext-).


Sunting: Anda dapat melewati pemeriksaan platform dengan ini, tetapi Komposer akan mengambil paket berdasarkan versi PHP yang diberikan. Jadi, ketika Anda membutuhkan komposer untuk juga meniru versi PHP selama penyelesaian ketergantungan, Anda dapat (dan harus!) Menggunakan ini di composer.json Anda:

{
    "config": {
       "platform": {
           "php": "5.6.6"
       }
    }
}

https://getcomposer.org/doc/06-config.md#platform

Armin
sumber
Bagaimana saya bisa mengabaikan repositori pribadi. Beberapa paket memerlukan repo pribadi.
dungphanxuan
Mengagumkan. Ini berguna ketika php cli belum mencerminkan perubahan versi.
giovannipds
Di Komposer 2 ada perintah baru, yang dapat digunakan: php.watch/articles/composer-ignore-platform-req
Armin
3

Untuk banyak perintah, Anda dapat memberi tahu komposer untuk melewati pemeriksaan versi php, dengan parameter " --ignore-platform-reqs":

composer COMMAND --ignore-platform-reqs

ini akan melewati spesifikasi versi php.

Sadarilah bahwa perangkat lunak dapat berfungsi atau tidak: spesifikasi versi php ada karena di suatu tempat dalam kode diperlukan setidaknya versi php yang ditentukan, jadi jika Anda menggunakan kode itu, perangkat lunak akan rusak.

Luca C.
sumber
--ignore-platform-reqstidak untuk semua perintah yang tersedia, seperti yang tersirat dari jawaban Anda.
Armin
-11

Jika ada sesuatu yang membutuhkan versi PHP tertentu, itu tidak akan berjalan di versi PHP yang lebih rendah. Anda masih akan menerima kesalahan saat melewati persyaratan PHP.

Btw, PHP 5.3 tidak lagi dipertahankan, saya sangat menyarankan untuk memperbarui server PHPCI.

Wouter J
sumber
3
Pertama saya ingin tahu bagaimana cara melewati persyaratan PHP.
Armin
Anda tidak bisa dan tidak mau karena kode tidak akan berfungsi di versi php yang lebih rendah
Wouter J
3
Itu akan. Hanya server CI yang mendapatkan versi PHP rendah. Server yang berisi SDK facebook berjalan pada PHP 5.4. Ini hanya tentang server ci, yang mengemas semuanya ke file zip bagus yang dapat diterapkan.
Armin
Meskipun PHP 5.3 tidak lagi dikelola oleh pengembang inti PHP, beberapa varian Linux masih mendukungnya dan akan melakukannya untuk sementara waktu. Ubuntu 12.04 LTS dikirimkan dengan 5.3 dan didukung hingga April 2017 ( wiki.ubuntu.com/LTS ). Pindah ke 14.04 adalah jalur peningkatan terbaik tetapi ada perubahan yang melanggar yang membutuhkan sejumlah pekerjaan untuk memperbaikinya (Apache 2.4, php-fpm dll). Karenanya banyak internet masih menggunakan 5.3.x.
Andrew McCombe
benar, sayangnya 99% paket bahkan yang didukung dengan baik tidak memiliki persyaratan yang sesuai. Ini lebih merupakan indikator dari apa yang digunakan pengembang daripada apa pun.
mschuett