2015-09-29 18 views
16

Tôi cố gắng cài đặt Laravel 5.1 trên máy chủ lưu trữ chỉ có 5.5.6 PHP. Trong khi tôi yêu cầu khách hàng nâng cấp, điều này có thể không khả thi/khả thi.Ghi đè phụ thuộc cơ sở PHP trong nhà soạn nhạc

Vì vậy, tôi nhận được:

- This package requires php >=5.5.9 but your PHP version (5.5.6) 
    does not satisfy that requirement. 

trên composer.phar install.

Có cách nào để thực hiện cài đặt trình soạn thảo bỏ qua sự phụ thuộc này không?

Tôi nghĩ rằng điều đó sẽ an toàn vì chỉ có sửa lỗi từ 5.5.6 đến 5.5.9.

+0

Dự án Laravel may quyết định rằng họ tuyên bố phát hành 5.1 của họ tương thích với phiên bản PHP có sẵn lâu đời nhất họ có thể thử nghiệm với trên TravisCI, đó là 5.5.9. Một mặt, đây là một lựa chọn hợp lý. Mặt khác, nó là một rào cản không cần thiết đối với những người chạy trên các phiên bản cũ hơn của nhánh PHP 5.5, bởi vì không có sự thay đổi không tương thích ngược trong PHP 5.5 trước 5.5.9 - mã sẽ chạy. Vấn đề với '--ignore-platform-req' là nó ảnh hưởng đến TẤT CẢ các gói, bạn có thể nhận các gói chỉ chạy với PHP 5.6. – Sven

Trả lời

23

Các thông báo lỗi chỉ ra một yêu cầu từ chính composer.json. Yêu cầu phiên bản có thể chỉ là bộ chuyển đổi:

"require": { 
    "php": ">=5.5", 

Sau khi thay đổi phiên bản như thế này tôi nhận được:

Problem 1 
    - Installation request for classpreloader/classpreloader 2.0.0 -> satisfiable by classpreloader/classpreloader[2.0.0]. 
    - classpreloader/classpreloader 2.0.0 requires php >=5.5.9 -> your PHP version (5.5.6) or "config.platform.php" value does not satisfy that requirement. 
    Problem 2 
    - Installation request for laravel/framework v5.1.17 -> satisfiable by laravel/framework[v5.1.17]. 
    - laravel/framework v5.1.17 requires php >=5.5.9 -> your PHP version (5.5.6) or "config.platform.php" value does not satisfy that requirement. 
    Problem 3 
    - Installation request for laravelcollective/html v5.1.6 -> satisfiable by laravelcollective/html[v5.1.6]. 
    - laravelcollective/html v5.1.6 requires php >=5.5.9 -> your PHP version (5.5.6) or "config.platform.php" value does not satisfy that requirement. 
    Problem 4 
    - laravel/framework v5.1.17 requires php >=5.5.9 -> your PHP version (5.5.6) or "config.platform.php" value does not satisfy that requirement. 
    - jenssegers/agent v2.1.7 requires illuminate/support ~4.0|~5.0 -> satisfiable by laravel/framework[v5.1.17]. 
    - Installation request for jenssegers/agent v2.1.7 -> satisfiable by jenssegers/agent[v2.1.7]. 

Sử dụng đoạn mã sau trong composer.json, một phiên bản php thể được mô phỏng

[...] 
"config": { 
    "preferred-install": "dist", 
    "platform": { 
     "php": "5.5.9" 
    } 
} 

Tài liệu: https://getcomposer.org/doc/06-config.md#platform

nền tảng

Cho phép bạn gói nền tảng giả (PHP và phần mở rộng) để bạn có thể mô phỏng một env sản xuất, xác định nền tảng mục tiêu của bạn trong config. Ví dụ: {"php": "5.4", "ext-something": "4.0"}.

Đừng quên để chạy một composer.phar update sau này

+0

Tôi đã đi qua phần 'nền tảng 'nhưng không đọc kỹ. Rất đơn giản :) Tôi đã thêm trích dẫn doc vào câu trả lời của bạn. –

+1

Mô phỏng gói nền tảng được đề cập ở đây cũng sẽ giúp nếu PHP cơ sở của bạn đang chạy phiên bản khác với phiên bản mà mã đang chạy. Ví dụ, một trong các máy chủ của tôi chạy Plesk có phiên bản PHP cơ sở 5.3.x, mã cho trang web ảo đang chạy trên 5.4.x. Nếu không có điều này, một nhà soạn nhạc được cài đặt tập trung chỉ chọn lên phiên bản cơ sở, vì vậy có thể tạo ra các vấn đề khi cố gắng sử dụng gói phụ thuộc vào phiên bản PHP khác nhau –

+0

Có cách nào để thực hiện điều này từ CLI không? Một cái gì đó như 'composer install --config platform.php 5.3.3' – Starx

47

Bạn có thể sử dụng --ignore-platform-reqs tùy chọn cho các lệnh soạn nhạc như install, update, vv

--ignore-platform-reqs: bỏ qua php, hhvm, lib- * và ext- * yêu cầu và buộc cài đặt ngay cả khi máy cục bộ không thực hiện các cài đặt này. Xem thêm tùy chọn cấu hình nền tảng.

https://getcomposer.org/doc/03-cli.md

Vì vậy, bạn có thể thử với

composer install --ignore-platform-reqs 
+0

Có phương pháp nào tốt hơn chỉ bỏ qua phiên bản PHP không? Hoặc tôi thậm chí có thể yêu cầu 5.5.6 thay vì 5.5.9 – Alex

+0

Tôi không nghĩ có một thứ như vậy. Ít nhất tôi không thể tìm thấy nó. –

+0

Tìm cách. Đã trực tiếp ở đó trong tài liệu. Nhưng chỉ hoạt động cho các gói con. Xem câu trả lời của tôi. – Alex

Các vấn đề liên quan