ข้ามข้อกำหนด PHP ของนักแต่งเพลง


117

เราใช้ PHPCI และนักแต่งเพลง เซิร์ฟเวอร์ที่รัน PHPCI อยู่บน PHP 5.3

สำหรับโครงการเราได้เพิ่ม Facebook PHP SDK โดยใช้นักแต่งเพลง ต้องใช้ PHP 5.4 นักแต่งเพลงถูกเรียกโดย PHPCI และดำเนินการ แต่เนื่องจากเซิร์ฟเวอร์ CI เพิ่งมีตัวแต่ง PHP 5.3 ล้มเหลวด้วยข้อความแสดงข้อผิดพลาด:

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

สิ่งนี้ทำให้การสร้างของฉันล้มเหลวใน PHPCI แน่นอน

มีความเป็นไปได้ไหมที่จะข้ามข้อกำหนดนี้ อาจจะโดยการเพิ่ม option ให้กับ composer.json? หรือพารามิเตอร์ในการเรียก composer.phar?

คำตอบ:


286

ฉันพบตัวเลือก:

composer install --ignore-platform-reqs

ไม่สนใจข้อกำหนดของแพลตฟอร์ม (แพ็คเกจ php & ext-)


แก้ไข:คุณสามารถข้ามการตรวจสอบแพลตฟอร์มได้ด้วยสิ่งนี้ แต่นักแต่งเพลงจะดึงแพ็คเกจตามเวอร์ชัน PHP ที่กำหนด ดังนั้นเมื่อคุณต้องการให้นักแต่งเพลงเลียนแบบเวอร์ชัน PHP ในระหว่างการแก้ไขปัญหาคุณสามารถ (และควร!) ใช้สิ่งนี้ใน composer.json ของคุณ:

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

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


ฉันจะละเว้นที่เก็บส่วนตัวได้อย่างไร บางแพ็คเกจต้องใช้ repo ส่วนตัว
dungphanxuan

น่ากลัว จะมีประโยชน์เมื่อ php cli ยังไม่แสดงการเปลี่ยนแปลงเวอร์ชัน
giovannipds

ใน Composer 2 มีคำสั่งใหม่ซึ่งสามารถใช้ได้: php.watch/articles/composer-ignore-platform-req
Armin

4

สำหรับคำสั่งต่างๆคุณสามารถบอกให้ผู้แต่งข้ามการตรวจสอบเวอร์ชัน php โดยใช้พารามิเตอร์ " --ignore-platform-reqs"

composer COMMAND --ignore-platform-reqs

สิ่งนี้จะข้ามข้อกำหนดเวอร์ชัน php

โปรดทราบว่าซอฟต์แวร์อาจใช้งานได้หรือไม่: ข้อกำหนดเวอร์ชัน php อยู่ที่นั่นเนื่องจากบางแห่งในโค้ดจำเป็นต้องมีเวอร์ชัน php ที่ระบุเป็นอย่างน้อยดังนั้นหากคุณใช้รหัสนั้นซอฟต์แวร์จะพัง


--ignore-platform-reqsไม่ใช่สำหรับคำสั่งทั้งหมดที่มีอยู่เนื่องจากคำตอบของคุณมีความหมาย
Armin

-11

หากสิ่งใดต้องการ PHP เวอร์ชันเฉพาะก็จะไม่ทำงานใน PHP เวอร์ชันที่ต่ำกว่า คุณจะยังคงได้รับข้อผิดพลาดอย่างถูกต้องเมื่อข้ามข้อกำหนดของ PHP

Btw, PHP 5.3 ไม่ได้รับการดูแลอีกต่อไปฉันขอแนะนำอย่างยิ่งให้อัปเดตเซิร์ฟเวอร์ PHPCI


3
ก่อนอื่นฉันต้องการทราบวิธีหลีกเลี่ยงข้อกำหนดของ PHP
Armin

คุณทำไม่ได้และคุณจะทำไม่ได้เนื่องจากโค้ดจะไม่ทำงานในเวอร์ชัน php ที่ต่ำกว่า
Wouter J

3
มันจะ. เพียงแค่เซิร์ฟเวอร์ CI มีเวอร์ชัน PHP ต่ำ เซิร์ฟเวอร์ที่มี Facebook SDK ทำงานบน PHP 5.4 เป็นเพียงเกี่ยวกับเซิร์ฟเวอร์ ci ซึ่งบรรจุทุกอย่างไว้ในไฟล์ zip ที่ปรับใช้งานได้ดี
Armin

แม้ว่า PHP 5.3 จะไม่ได้รับการดูแลโดยนักพัฒนา PHP หลักอีกต่อไป แต่รสชาติของ Linux บางอย่างยังคงรองรับและจะดำเนินการไปสักพัก Ubuntu 12.04 LTS มาพร้อมกับ 5.3 และรองรับจนถึงเดือนเมษายน 2017 ( wiki.ubuntu.com/LTS ) การย้ายไปที่ 14.04 เป็นเส้นทางการอัปเกรดที่ดีที่สุด แต่มีการเปลี่ยนแปลงที่ไม่สมบูรณ์ซึ่งต้องใช้งานจำนวนมากในการแก้ไข (Apache 2.4, php-fpm เป็นต้น) ดังนั้นอินเทอร์เน็ตจำนวนมากยังคงใช้ 5.3.x.
Andrew McCombe

น่าเสียดายที่ 99% ของแพ็กเกจแม้แพ็คเกจที่รองรับอย่างดีก็ไม่มีข้อกำหนดที่เหมาะสม เป็นตัวบ่งชี้สิ่งที่นักพัฒนาใช้มากกว่าสิ่งอื่นใด
mschuett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.