ข้ามข้อกำหนด 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.