Làm cách nào để buộc nhà soạn nhạc sử dụng một phiên bản PHP cụ thể?

Bạn có đang sử dụng các phiên bản PHP khác nhau trên máy phát triển cục bộ của mình giống như tôi không?

$ composer require intervention/image:^2.7
...
Your requirements could not be resolved to an installable set of packages.

Problem 1
  - Root composer.json requires php ^7.4 but your php version (8.1.5) does not satisfy that requirement.
...

Composer mặc định là phiên bản PHP mặc định. Nghĩa là, nhận xét Shebang ở đầu tệp soạn thảo thực thi cho biết nên sử dụng tệp nhị phân php

#!/usr/bin/env php

Bạn có thể biết đây là phiên bản nào bằng cách chạy php --version trên thiết bị đầu cuối của mình

Bây giờ, để sử dụng phiên bản PHP theo sở thích của bạn, bạn nên chạy tệp nhị phân composer với tệp nhị phân php mong muốn. Đối với điều này, bạn cần đường dẫn chính xác đến tệp nhị phân composer. Trên máy của tôi, mã nhị phân composer được đặt tại

#!/usr/bin/env php
1

Đôi khi bạn đã cài đặt một phiên bản PHP khác trên máy của mình hoặc thiết lập như trên máy chủ trực tiếp. Để ngăn việc cài đặt các gói không tương thích trên máy chủ trực tiếp, bạn có thể xác định phiên bản PHP được sử dụng cho trình soạn thảo để thu thập các gói

Để làm như vậy, hãy đặt cờ sau trong config của bạn trong composer.json

"config": {
    "platform": {
        "php": "7.2.11"
    }
},

Nếu môi trường phát triển và sản xuất của bạn không phù hợp, bạn có thể dễ dàng gặp khó khăn khi đến lúc triển khai máy chủ trực tiếp. Không có gì lạ khi các nhà phát triển thấy mình làm việc với một phiên bản PHP và sử dụng một phiên bản khác trong đích đến cuối cùng của ứng dụng hoặc trang web. Nếu bạn sử dụng Trình soạn thảo để quản lý các gói PHP, sẽ rất tốt nếu bạn có thể tính đến điều này để tránh mọi bất ngờ khó chịu sau khi triển khai. Rất may Nhà soạn nhạc đã bảo hiểm này

Chúng tôi có thể cho Composer biết phiên bản PHP nào chúng tôi đang hỗ trợ với ứng dụng/trang web của mình bằng cách sử dụng cấu hình platform trong trình soạn thảo của chúng tôi. tập tin json

{
    "name": ".../...",
    "config": {
        "platform": {
            "php": "5.6.1"
        }
    },
    "require": {
        ...
    }
}

Trong ví dụ này, chúng tôi đang giả mạo phiên bản PHP thành 5. 6. 1. Điều này có nghĩa là bất cứ khi nào chúng tôi thử và cài đặt hoặc cập nhật một gói với Trình soạn thảo, phiên bản nền tảng giả mạo của PHP sẽ được tính đến thay vì phiên bản PHP đang được sử dụng trên dòng lệnh mà chúng tôi đang chạy Trình soạn thảo từ. Điều này thực sự hữu ích nếu môi trường sản xuất của chúng tôi sử dụng một thiết lập khác với môi trường chúng tôi đang phát triển. Ví dụ: bạn có thể đang sử dụng phiên bản cập nhật của PHP 7 cục bộ, nhưng triển khai tới máy chủ vẫn sử dụng phiên bản 5. 6

Một cách khác để thiết lập điều này là từ dòng lệnh

composer config platform.php 5.6.1

Điều này sẽ đặt tùy chọn platform trong nhà soạn nhạc. json cho chúng tôi. Trong ví dụ này, nó sẽ thêm PHP 5. 6. 1 vào tệp JSON giống như trong ví dụ trước. Bạn cũng có thể sử dụng cờ -g để đặt cờ này trên toàn cầu

Trên nền tảng gói Trình soạn thảo, các yêu cầu được thêm vào giống như các phụ thuộc gói. Vì vậy, ví dụ: nếu chúng tôi có một gói yêu cầu tối thiểu PHP 7. 1. 0 nhà soạn nhạc. tệp json sẽ trông như thế nào. -

{
    "name": ".../...",
    "require": {
        "php": "7.1.0"
    }
}

Đây là những gì Trình soạn thảo sẽ sử dụng khi cài đặt và cập nhật các gói khi dự án của chúng tôi có cấu hình nền tảng

Lưu ý rằng khi thêm yêu cầu PHP tối thiểu, chúng tôi thêm yêu cầu này dưới dạng phụ thuộc bằng cách sử dụng khóa require, trong khi cài đặt thiết lập nền tảng sử dụng platform trong tùy chọn config

Khi nói đến việc cài đặt và cập nhật các gói, đôi khi bạn có thể muốn bỏ qua các yêu cầu nền tảng. Ví dụ: khi thêm hoặc cập nhật phần phụ thuộc của nhà phát triển sẽ không bao giờ được cài đặt trên môi trường sản xuất. Đối với điều này, chúng ta có thể sử dụng cờ

composer config platform.php 5.6.1
0

________số 8_______

Mặc dù sử dụng cấu hình platform trong nhà soạn nhạc. json có thể không bắt được tất cả các gói không phù hợp khi sử dụng Trình soạn thảo, hy vọng rằng nó sẽ bắt được hầu hết các mã không tương thích có thể tìm thấy đường vào môi trường sản xuất của bạn. Đây là một cứu cánh cho tôi trong quá khứ và giúp tôi tránh được nhiều cơn đau đầu

Gần đây tôi đã viết một bài về việc cập nhật lên PHP 7. 4. Điều đó thật tuyệt. Phấn khởi. Phát triển. Tuy nhiên, nó đưa ra một số thách thức thú vị, đặc biệt là khi bạn đã cập nhật máy chủ của mình lên phiên bản PHP mới. Tại sao?

Chẳng hạn, đây là một kịch bản mà tôi đã cập nhật máy ảo của mình lên PHP 7. 4 và tôi đặt các yêu cầu PHP bên trong trình soạn thảo của mình. json thành PHP 7. 4 NHƯNG tôi chưa cập nhật máy chủ của mình lên PHP 7. 4

Không thể giải quyết các yêu cầu của bạn thành một bộ gói có thể cài đặt

vấn đề 1

- Nhà soạn nhạc gốc. json yêu cầu php >=7. 4 nhưng phiên bản php của bạn (7. 3. 14) không đáp ứng yêu cầu đó

Bạn cũng có thể giải quyết vấn đề này theo chiều ngược lại, nơi bạn đã cập nhật máy chủ của mình lên PHP 7. 4 nhưng chưa update project lên PHP 7. 4 (vẫn là 7. 2 hoặc 7. 3) và bạn vô tình nâng cấp

Có một số cách mà nhà soạn nhạc tác động đến phiên bản PHP. Hãy đi sâu vào những

PHP là một phụ thuộc

Bạn có biết bạn có thể thêm PHP dưới dạng phụ thuộc ngay trong trình soạn thảo. tập tin json? . Và nó chắc chắn được khuyến nghị, vì nó giúp đảm bảo rằng bạn có đúng phiên bản của các phụ thuộc khác. Nếu dự án của bạn đang chạy PHP 7. 4, bạn muốn đảm bảo rằng tất cả các phần phụ thuộc khác của bạn đều hoạt động với PHP 7. 4

Bạn thêm phần này giống như bất kỳ phần phụ thuộc nào khác

"require": {
   "php": ">=7.4",}

Sau đó, bạn chỉ có thể chạy composer update php --with-all-dependencies giống như bất kỳ thứ gì khác

Ghi chú. nếu bạn nhận được lỗi ở trên về nhà soạn nhạc. json, đôi khi đây là dấu hiệu cho thấy bạn NÊN cập nhật PHP máy chủ của mình hoặc bạn nên làm việc bên trong máy ảo của mình. Trong trường hợp của tôi, tất cả những gì tôi phải làm để giải quyết vấn đề đó là chạy lệnh composer bên trong lando vm (do đó cập nhật lando composer [chạy bên trong] so với. cập nhật nhà soạn nhạc [chạy bên ngoài])

PHP dưới dạng cấu hình nền tảng

Trong kịch bản cập nhật mà tôi đã thảo luận trước đây, sẽ giúp đảm bảo rằng phiên bản PHP máy chủ của bạn và phiên bản PHP dự án luôn ở trong làn đường của chúng

"cấu hình". {

"nền tảng". {

"php". "7. 3"

}

},

Bằng cách này, về cơ bản bạn sẽ đảm bảo rằng ngay cả khi bạn có PHP 7. 4 trên máy chủ của bạn, dự án này sẽ vẫn ở PHP 7. 3. Hãy nhớ rằng, "php". ">=7. 3" theo yêu cầu CÓ THỂ CÓ NGHĨA PHP 7. 4. Vì vậy, bằng cách có "php". ">=7. 3" theo yêu cầu và "php". "7. 3" làm cấu hình nền tảng sẽ khóa dự án với PHP 7. 3

Tóm lại là

Quá trình xác định này cực kỳ hữu ích khi bạn có một số lượng lớn các nhà phát triển không làm việc trong một môi trường nhất quán (e. g. một cấu hình VM phổ biến). Bất cứ khi nào bạn có những người có khả năng thay đổi cấu hình PHP giữa các máy, những bổ sung này cho trình soạn thảo của bạn. json fill hy vọng sẽ đảm bảo trải nghiệm soạn nhạc ổn định hơn

Nội dung liên quan

Đặc sắc

Làm cách nào để buộc nhà soạn nhạc sử dụng một phiên bản PHP cụ thể?

Ngày 26 tháng 10 năm 2022

Làm việc trên các phụ thuộc ngược dòng

Ngày 26 tháng 10 năm 2022

Cây phụ thuộc có thể rất lớn và với bản phát hành Drupal 10 sắp tới PHP 8. 1 có thể có tác động đáng kể đến dự án của bạn

Ngày 26 tháng 10 năm 2022

Làm cách nào để buộc nhà soạn nhạc sử dụng một phiên bản PHP cụ thể?

Ngày 23 tháng 8 năm 2022

Kiểm tra PHP 8. 1 cập nhật

Ngày 23 tháng 8 năm 2022

Tổng quan về tất cả những điều tôi đã thử/thử nghiệm để sẵn sàng cho PHP 8. 1

Ngày 23 tháng 8 năm 2022

Làm cách nào để buộc nhà soạn nhạc sử dụng một phiên bản PHP cụ thể?

Ngày 9 tháng 8 năm 2022

Các bản vá lỗi của nhà soạn nhạc không được áp dụng

Ngày 9 tháng 8 năm 2022

Điều gì xảy ra với các bản vá của nhà soạn nhạc bị lỗi âm thầm?

Ngày 9 tháng 8 năm 2022

Làm cách nào để buộc nhà soạn nhạc sử dụng một phiên bản PHP cụ thể?

Ngày 15 tháng 9 năm 2021

Phiên bản nhà soạn nhạc không khớp

Ngày 15 tháng 9 năm 2021

Đăng để hướng dẫn cách giải quyết sự cố không khớp của trình soạn thảo trong các lệnh drush

Ngày 15 tháng 9 năm 2021

Làm cách nào để buộc nhà soạn nhạc sử dụng một phiên bản PHP cụ thể?

Ngày 2 tháng 6 năm 2021

hướng dẫn. Cập nhật lên PHP 8. 0 với Nhà soạn nhạc

Ngày 2 tháng 6 năm 2021

Hướng dẫn về cách cập nhật lên PHP 8 với Composer

Ngày 2 tháng 6 năm 2021

Làm cách nào để buộc nhà soạn nhạc sử dụng một phiên bản PHP cụ thể?

21 Tháng Năm, 2021

Ở hậu trường. Làm cách nào để chúng tôi chạy Trang web DGC

21 Tháng Năm, 2021

Tóm tắt từ hội thảo trên web gần đây của tôi trên trang web Drupal GovCon

21 Tháng Năm, 2021

Làm cách nào để buộc nhà soạn nhạc sử dụng một phiên bản PHP cụ thể?

29 Tháng Tư, 2021

Tích hợp Composer vào CI/CD Pipelines

29 Tháng Tư, 2021

Trình soạn thảo là một công cụ rất mạnh, nhưng để sử dụng nó một cách hiệu quả thì cần có một số thành phần bổ sung và không tầm thường cho dự án của bạn. Hãy tìm hiểu về Trình soạn nhạc và Tích hợp liên tục

29 Tháng Tư, 2021

Làm cách nào để buộc nhà soạn nhạc sử dụng một phiên bản PHP cụ thể?

9 tháng 3 năm 2021

Cài đặt Composer 2 trên Máy chủ Bản dựng Tích hợp Liên tục

9 tháng 3 năm 2021

Làm cách nào để bạn cài đặt Composer 2 nếu bạn không thể ghi đè lên các tệp nhị phân hệ thống hoặc chạy tự cập nhật của nhà soạn nhạc?

9 tháng 3 năm 2021

Làm cách nào để buộc nhà soạn nhạc sử dụng một phiên bản PHP cụ thể?

17 Tháng hai, 2021

Cài đặt Composer 1 và Composer 2 trên cùng một máy chủ

17 Tháng hai, 2021

Đôi khi là người áp dụng sớm có thể gây ra vấn đề. Bài đăng này sẽ giúp bạn tránh các sự cố nếu bạn đã cập nhật lên Composer 2 nhưng một số dự án của bạn vẫn yêu cầu Composer 1

17 Tháng hai, 2021

Làm cách nào để buộc nhà soạn nhạc sử dụng một phiên bản PHP cụ thể?

20 Tháng một, 2021

bí danh nhà soạn nhạc. Làm thế nào để giả mạo một phụ thuộc

20 Tháng một, 2021

Xem cách đặt bí danh cho phần phụ thuộc của nhà soạn nhạc để phản ứng với các bản cập nhật bảo mật có thể bị chặn bởi các phần phụ thuộc trong dự án của bạn

Trình soạn thảo sử dụng phiên bản PHP nào?

Yêu cầu hệ thống# . 2. 5 PHP 7.2.5 để chạy. Phiên bản hỗ trợ dài hạn (2. 2. x) vẫn cung cấp hỗ trợ cho PHP 5. 3. 2+ trong trường hợp bạn gặp khó khăn với phiên bản PHP cũ.

Làm cách nào để cập nhật phiên bản PHP bằng trình soạn thảo?

Để cập nhật các gói của bạn .
Điều hướng đến thư mục gốc của repo git của bạn, nơi nhà soạn nhạc của bạn. .
Chạy cập nhật trình soạn thảo (trên máy cục bộ của bạn) để cập nhật các gói cần thiết và tạo lại trình soạn thảo. .
Cam kết nhà soạn nhạc được cập nhật. .
Trong Engine Yard Cloud, nhấp vào Công cụ > Bảng điều khiển
Chọn một môi trường bằng cách nhấp vào tên môi trường

Làm cách nào để thay đổi phiên bản PHP?

Thay đổi phiên bản PHP .
Điều hướng đến trang Quản lý trang web
Nhấp vào nút Quản lý để mở trang Quản lý trang web, trang này cho phép bạn điều chỉnh các cài đặt khác nhau cho trang web của mình. .
Trong phần PHP, nhấp vào biểu tượng Sửa đổi
Chọn một phiên bản PHP từ menu thả xuống. .
Nhấp vào nút Thay đổi phiên bản PHP

Làm cách nào để hạ cấp phiên bản PHP?

Nâng cấp hoặc hạ cấp phiên bản PHP .
Đảm bảo các gói php cho phiên bản bạn muốn đã được cài đặt
Cập nhật bất kỳ cấu hình nào cho phiên bản PHP đó
Cập nhật cấu hình máy chủ web của bạn để trỏ đến đúng phiên bản PHP
Trỏ PHP CLI đến đúng phiên bản PHP
Khởi động lại máy chủ web của bạn và php-fpm