Cài đặt mcrypt php 8

Tài liệu này mô tả hành vi chung của Heroku vì nó liên quan đến việc nhận dạng và thực thi các ứng dụng PHP

kích hoạt

Hỗ trợ Heroku PHP sẽ chỉ được áp dụng cho các ứng dụng khi ứng dụng có tệp có tên

-----> Installing platform packages...
       - php [7.4.19]
3 trong thư mục gốc. Ngay cả khi một ứng dụng không có phụ thuộc Composer, nó phải bao gồm ít nhất một [
-----> Installing platform packages...
       - php [7.4.19]
4]
-----> Installing platform packages...
       - php [7.4.19]
3 trống để được công nhận là một ứng dụng PHP

Khi Heroku nhận ra một ứng dụng PHP, nó sẽ phản hồi tương ứng trong quá trình đẩy

$ git push heroku master
-----> PHP app detected
…

Nếu

-----> Installing platform packages...
       - php [7.4.19]
3 chỉ định bất kỳ loại phụ thuộc nào trong phần
-----> Installing platform packages...
       - php [7.4.19]
7 của nó, thì
-----> Installing platform packages...
       - php [7.4.19]
8 tương ứng được tạo bằng cách chạy
-----> Installing platform packages...
       - php [7.4.19]
9 cũng phải được cam kết với kho lưu trữ, nếu không, việc đẩy sẽ bị từ chối. Điều này đảm bảo rằng các cài đặt Heroku phụ thuộc hoàn toàn giống như trong bất kỳ môi trường nào khác. Vui lòng tham khảo hướng dẫn chi tiết

thời gian chạy PHP

Heroku cho phép bạn chạy ứng dụng của mình bằng thời gian chạy PHP chính thức

Phiên bản được hỗ trợ

Hỗ trợ PHP của Heroku mở rộng cho các ứng dụng sử dụng các bản phát hành mới nhất hiện có trong PHP 7. 4, PHP8. 0 và PHP8. 1 loạt

Hỗ trợ cho chuỗi phát hành PHP trên nền tảng Heroku tuân theo chính sách hỗ trợ của Nhóm PHP, thường có các bản cập nhật hoạt động trong hai năm sau lần đầu tiên x. y. 0, sau đó là một năm cập nhật bảo mật

Khi một loạt bản phát hành PHP đã hết hạn sử dụng, nó sẽ không còn được Heroku hỗ trợ nữa, nhưng bản phát hành mới nhất của nó sẽ vẫn có sẵn cho các bản dựng để cho phép khách hàng nâng cấp ứng dụng của họ lên phiên bản PHP mới hơn

PHP7. 4 đang ở chế độ bảo trì chỉ để bảo mật và sẽ ngừng hoạt động hoàn toàn vào cuối năm 2022. Chỉ những bản sửa lỗi bảo mật quan trọng mới được cung cấp bởi những người bảo trì PHP cho loạt bản phát hành này. Người dùng được khuyến khích cập nhật ứng dụng của họ lên PHP 8 sớm nhất có thể. Để biết thêm thông tin về các mốc thời gian hỗ trợ cho các bản phát hành PHP, hãy tham khảo trang Phiên bản được hỗ trợ trên trang web chính thức của PHP

phiên bản có sẵn

Bảng sau liệt kê các phiên bản thời gian chạy có sẵn cho các bản dựng trên mỗi ngăn xếp

PHP7. 1, 7. 2 và 7. 3 là cuối đời. Các nhà bảo trì PHP sẽ không cung cấp thêm bản sửa lỗi nào, kể cả các bản sửa lỗi bảo mật quan trọng cho các chuỗi phiên bản này và Heroku không cung cấp hỗ trợ cho các ứng dụng sử dụng các bản phát hành này. Người dùng được khuyến khích cập nhật ứng dụng của họ lên PHP 8 sớm nhất có thể. Để biết thêm thông tin về các mốc thời gian hỗ trợ cho các bản phát hành PHP, hãy tham khảo trang Phiên bản được hỗ trợ trên trang web chính thức của PHP

Thời gian chạy / sê-ri
{
  "require": {
    "php": "^8.1.0"
  }
}
0
{
  "require": {
    "php": "^8.1.0"
  }
}
1
{
  "require": {
    "php": "^8.1.0"
  }
}
2PHP 7. 17. 1. 33--PHP 7. 27. 2. 34--PHP 7. 37. 3. 337. 3. 33-PHP7. 47. 4. 337. 4. 33-PHP 8. 08. 0. 258. 0. 25-PHP 8. 18. 1. 128. 1. 128. 1. 12

Các hàng được đánh dấu bằng nền và chữ màu vàng cho biết một loạt bản phát hành PHP chỉ nhận các bản cập nhật bảo mật từ các nhà bảo trì ngược dòng. Các hàng được đánh dấu bằng chữ và nền màu đỏ biểu thị chuỗi bản phát hành PHP đã hết hạn sử dụng và không còn nhận được bất kỳ loại bản cập nhật nào từ phía trên .

cài đặt thời gian chạy

Tất cả thời gian chạy PHP sử dụng tệp

{
  "require": {
    "php": "^8.1.0"
  }
}
3 của bản phát hành tương ứng làm cấu hình cơ sở
{
  "require": {
    "php": "^8.1.0"
  }
}
4 của chúng

Mặc dù vậy, các lệnh INI sau đây được đặt thành các giá trị dành riêng cho Heroku

  • được đặt thành
    {
      "require": {
        "php": "^8.1.0"
      }
    }
    
    6
  • được đặt thành
    • {
        "require": {
          "php": "^8.1.0"
        }
      }
      
      8 cho các phiên bản PHP trước 8. 1
    • {
        "require": {
          "php": "^8.1.0"
        }
      }
      
      9 cho PHP 8. 1 hoặc muộn hơn
  • được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    61
  • được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    63 [đối với PHP 7. 1 trở lên]
  • được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    65
  • được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    67
  • được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    69

Ngoài ra, thời gian chạy PHP luôn được bật OPcache để cải thiện hiệu suất, với các thay đổi cấu hình sau được tối ưu hóa cho các đặc điểm cụ thể của các dyno của Heroku

  • -----> Installing platform packages...
           - php [7.4.19]
    
    10 được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    11
  • -----> Installing platform packages...
           - php [7.4.19]
    
    12 được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    13

PHP CLI

Chỉ thị

-----> Installing platform packages...
       - php [7.4.19]
14 PHP INI cho tệp thực thi
-----> Installing platform packages...
       - php [7.4.19]
15 CLI mặc định cho toàn bộ bộ nhớ dyno có sẵn cho các phiên bản PHP 7. 2 hoặc muộn hơn. Điều này có nghĩa là e. g. worker dynos sử dụng lệnh
-----> Installing platform packages...
       - php [7.4.19]
16 sử dụng giới hạn bộ nhớ này thay vì giá trị PHP INI mặc định là
-----> Installing platform packages...
       - php [7.4.19]
17

thời gian chạy mặc định

Các ứng dụng không sử dụng

-----> Installing platform packages...
       - php [7.4.19]
3 hoặc trong đó
-----> Installing platform packages...
       - php [7.4.19]
8 không chứa yêu cầu đối với gói
-----> Installing platform packages...
       - php [7.4.19]
15 ngay cả trong bất kỳ gói phụ thuộc nào, sẽ chọn phiên bản mới nhất có thể có của PHP 7 trên ngăn xếp
{
  "require": {
    "php": "^8.1.0"
  }
}
0, phiên bản mới nhất có thể có của PHP 7 hoặc PHP 8 trên ngăn xếp . 1 hoặc mới hơn trên ngăn xếp
{
  "require": {
    "php": "^8.1.0"
  }
}
2

Chọn thời gian chạy

Bạn có thể chọn [các] thời gian chạy để sử dụng thông qua trong

-----> Installing platform packages...
       - php [7.4.19]
3. Khi đẩy, Heroku sẽ đọc thông tin cần thiết từ
-----> Installing platform packages...
       - php [7.4.19]
8, nếu có và quay trở lại
-----> Installing platform packages...
       - php [7.4.19]
3 nếu không

Ví dụ:

-----> Installing platform packages...
       - php [7.4.19]
3 sau đây sẽ hướng dẫn Heroku sử dụng phiên bản PHP 7 mới nhất lớn hơn hoặc bằng 7. 4. 0, nhưng không phải PHP 8

$ git push heroku master
-----> PHP app detected
…
9

Không bao giờ chỉ định một phiên bản chính xác như “

-----> Installing platform packages...
       - php [7.4.19]
68” cho PHP hoặc bất kỳ gói nào khác

Thay vào đó, hãy sử dụng để đảm bảo rằng bạn nhận được các bản cập nhật thích hợp khi đẩy khi chúng có sẵn

Đối với PHP, điều đó có nghĩa là chỉ định e. g. “______411” sẽ luôn cập nhật cho bạn 8 bản mới nhất. 0. x, sẽ hoàn toàn tương thích với các bản phát hành khác từ 8. 0 [nhưng có thể chứa các cập nhật về bảo mật hoặc hiệu suất], nhưng không phải 8. 1. 0 trở lên

Để có được PHP 8 mới nhất. 0 trở lên [bao gồm cả PHP 8. 1, 8. 2, v.v. ] chứ không phải PHP 9, bạn sẽ chỉ định “______412”

Heroku sẽ in các phiên bản đã được giải quyết và sẽ được cài đặt

-----> Installing platform packages...
       - php [7.4.19]

Việc chỉ định một phiên bản không xác định hoặc không được hỗ trợ sẽ dẫn đến lỗi liệt kê các phiên bản thay thế tiềm năng

PHP

Chỉ định “

-----> Installing platform packages...
       - php [7.4.19]
15” làm phụ thuộc trong phần
-----> Installing platform packages...
       - php [7.4.19]
7 của
-----> Installing platform packages...
       - php [7.4.19]
3 của bạn để sử dụng PHP làm thời gian chạy; . 1 hoặc muộn hơn

________số 8

Bạn nên luôn thêm tiền tố vào phiên bản tối thiểu mà bạn muốn nhận với bộ chọn

-----> Installing platform packages...
       - php [7.4.19]
69. Điều này đảm bảo rằng bạn sẽ nhận được các phiên bản cập nhật khi chúng có sẵn. Trong ví dụ trên, bạn sẽ nhận được PHP 8. 1. 0 trở lên, bao gồm các phiên bản mới hơn trong 8. x, nhưng không phải PHP 9 sau khi nó được phát hành [mà bạn có thể muốn kiểm tra ứng dụng của mình trước trong trường hợp có bất kỳ sự cố tương thích ngược không mong muốn nào]

Tiếp theo, đảm bảo rằng các yêu cầu mới của bạn được "đóng băng" thành

-----> Installing platform packages...
       - php [7.4.19]
8 bằng cách chạy

-----> Installing platform packages...
       - php [7.4.19]
6

Cuối cùng, đừng quên

-----> Installing platform packages...
       - php [7.4.19]
18 và
-----> Installing platform packages...
       - php [7.4.19]
19 cả hai tệp

nâng cấp

Nếu bạn triển khai một ứng dụng không khai báo phụ thuộc phiên bản thời gian chạy, thì phiên bản PHP mới nhất sau đó sẽ được sử dụng. Ứng dụng của bạn sẽ được nâng cấp lên các phiên bản PHP mới hơn nếu có sẵn tự động trong lần triển khai tiếp theo

Nếu ứng dụng của bạn khai báo các phụ thuộc phiên bản thời gian chạy, thì phiên bản mới nhất phù hợp với ràng buộc phiên bản sẽ được chọn để cài đặt

Tiện ích mở rộng

Tiện ích mở rộng tích hợp sẵn

Bảng sau đây liệt kê những tiện ích mở rộng tích hợp sẵn nào đi kèm với PHP có sẵn cho mỗi loạt bản phát hành của PHP và liệu tiện ích mở rộng được đề cập có được tải theo mặc định hay không hoặc liệu nó có phải được tải một cách rõ ràng hay không

Tiện ích mở rộng PHP 7. 1PHP7. 2PHP7. 3PHP7. 4PHP 8. 0PHP8. 1
-----> Installing platform packages...
       - php [7.4.19]
31✱





-----> Installing platform packages...
       - php [7.4.19]
32✔





-----> Installing platform packages...
       - php [7.4.19]
33✱





-----> Installing platform packages...
       - php [7.4.19]
34✔





-----> Installing platform packages...
       - php [7.4.19]
35✔





-----> Installing platform packages...
       - php [7.4.19]
36✔





-----> Installing platform packages...
       - php [7.4.19]
37✔





-----> Installing platform packages...
       - php [7.4.19]
38✱





-----> Installing platform packages...
       - php [7.4.19]
39✔





-----> Installing platform packages...
       - php [7.4.19]
20✔





-----> Installing platform packages...
       - php [7.4.19]
21✱





-----> Installing platform packages...
       - php [7.4.19]
22✱





-----> Installing platform packages...
       - php [7.4.19]
23✱





-----> Installing platform packages...
       - php [7.4.19]
24✱





-----> Installing platform packages...
       - php [7.4.19]
25✔





-----> Installing platform packages...
       - php [7.4.19]
26✔





-----> Installing platform packages...
       - php [7.4.19]
27✱





-----> Installing platform packages...
       - php [7.4.19]
28✱





-----> Installing platform packages...
       - php [7.4.19]
29✔





$ git push heroku master
-----> PHP app detected
…
900✱





$ git push heroku master
-----> PHP app detected
…
901✔





$ git push heroku master
-----> PHP app detected
…
902✱





$ git push heroku master
-----> PHP app detected
…
903✱
-----
$ git push heroku master
-----> PHP app detected
…
904✔





$ git push heroku master
-----> PHP app detected
…
905✔





$ git push heroku master
-----> PHP app detected
…
906✔





$ git push heroku master
-----> PHP app detected
…
907✱





$ git push heroku master
-----> PHP app detected
…
908✔





$ git push heroku master
-----> PHP app detected
…
909✔





$ git push heroku master
-----> PHP app detected
…
910✔





$ git push heroku master
-----> PHP app detected
…
911✔





$ git push heroku master
-----> PHP app detected
…
912✱





$ git push heroku master
-----> PHP app detected
…
913✔





$ git push heroku master
-----> PHP app detected
…
914✔





$ git push heroku master
-----> PHP app detected
…
915✔





$ git push heroku master
-----> PHP app detected
…
916✔





$ git push heroku master
-----> PHP app detected
…
917✔





$ git push heroku master
-----> PHP app detected
…
918✔





$ git push heroku master
-----> PHP app detected
…
919✱





$ git push heroku master
-----> PHP app detected
…
920✔





$ git push heroku master
-----> PHP app detected
…
921✱





$ git push heroku master
-----> PHP app detected
…
922✔





$ git push heroku master
-----> PHP app detected
…
923-✱




$ git push heroku master
-----> PHP app detected
…
924✔





$ git push heroku master
-----> PHP app detected
…
925✱





$ git push heroku master
-----> PHP app detected
…
926✔





$ git push heroku master
-----> PHP app detected
…
927✔





$ git push heroku master
-----> PHP app detected
…
928✔





$ git push heroku master
-----> PHP app detected
…
929✱



--
$ git push heroku master
-----> PHP app detected
…
930✔





$ git push heroku master
-----> PHP app detected
…
931✱





$ git push heroku master
-----> PHP app detected
…
932✔





$ git push heroku master
-----> PHP app detected
…
933✔





$ git push heroku master
-----> PHP app detected
…
934✔





✔: enabled by default
✱. tùy chọn, có thể là

Cột được đánh dấu bằng văn bản và nền màu vàng cho biết loạt bản phát hành PHP chỉ nhận được các bản cập nhật bảo mật . Các cột được đánh dấu bằng chữ và nền màu đỏ cho biết chuỗi bản phát hành PHP đã hết hạn sử dụng và không còn nhận bất kỳ loại bản cập nhật nào từ phía trên .

Tiện ích mở rộng của bên thứ ba có sẵn

Bảng sau đây liệt kê các tiện ích mở rộng của bên thứ ba nào có sẵn cho mỗi loạt bản phát hành của PHP. Vì chúng được phân phối độc lập với thời gian chạy PHP, nên các phiên bản của chúng cũng được liệt kê. Chúng không bao giờ được tải theo mặc định và do đó phải rõ ràng

Tiện ích mở rộng PHP 7. 1PHP7. 2PHP7. 3PHP7. 4PHP 8. 0PHP8. 1____39371. 11. 0
1. 11. 0
1. 11. 0
1. 11. 0
1. 11. 0
1. 11. 0
______39385. 1. 21
5. 1. 21
5. 1. 21
5. 1. 21
5. 1. 21
5. 1. 21
____39391. 84. 0
1. 84. 0
1. 84. 0
1. 84. 0
1. 84. 0
1. 84. 0
____39401. 3. 2
1. 3. 2
1. 3. 2
-----------39411. 1. 5
1. 1. 5
1. 1. 5
1. 1. 5
1. 1. 5
1. 1. 5
______3942 [2. x]2. 5. 7
2. 5. 7
2. 5. 7
2. 5. 7
--______3942 [3. x]3. 0. 8
3. 0. 8
3. 0. 8
3. 0. 8
3. 0. 8
3. 0. 8
______39443. 7. 0
3. 7. 0
3. 7. 0
3. 7. 0
3. 7. 0
3. 7. 0
____39453. 2. 0
3. 2. 0
3. 2. 0
3. 2. 0
3. 2. 0
3. 2. 0
____39461. 11. 1
1. 14. 2
1. 14. 2
1. 14. 2
1. 14. 2
1. 14. 2
______3947 [8. x]8. 7. 0. 242
8. 7. 0. 242
8. 7. 0. 242
-
$ git push heroku master
-----> PHP app detected
…
947 [9. x]9. 21. 0. 311
9. 21. 0. 311
9. 21. 0. 311
9. 21. 0. 311
9. 21. 0. 311
9. 21. 0. 311
____3947 [10. x]10. 3. 0. 315
10. 3. 0. 315
10. 3. 0. 315
10. 3. 0. 315
10. 3. 0. 315
10. 3. 0. 315
____39502. 0. 7
2. 0. 7
2. 0. 7
2. 0. 7
2. 0. 7
2. 0. 7
______3951-1. 0. 11
1. 0. 11
1. 0. 11
1. 0. 11
1. 0. 11
____3952 [3. x]3. 4. 5
3. 4. 5
3. 4. 5
-
$ git push heroku master
-----> PHP app detected
…
952 [4. x]-4. 1. 3
4. 1. 3
4. 1. 3
--
$ git push heroku master
-----> PHP app detected
…
952 [5. x]---5. 1. 0
5. 1. 0
5. 1. 0
______39552. 2. 0
2. 2. 0
2. 2. 0
2. 2. 0
2. 2. 0
2. 2. 0
______3956 [0. x]-0. 7. 0
0. 7. 0
0. 7. 0
--______3956 [1. x]-1. 1. 0
1. 2. 0
1. 2. 0
1. 2. 0
1. 2. 0
____39582. 0. 1
2. 0. 1
2. 0. 1
2. 0. 1
2. 0. 1
2. 0. 1
____3959 [3. x]3. 1. 3
3. 1. 3
3. 1. 3
---
$ git push heroku master
-----> PHP app detected
…
959 [4. x]4. 1. 2
4. 1. 2
4. 1. 2
4. 1. 2
--______3959 [5. x]5. 0. 2
5. 0. 2
5. 0. 2
5. 0. 2
5. 0. 2
5. 0. 2
______3959 [6. x]6. 0. 3
6. 0. 3
6. 0. 3
6. 0. 3
6. 0. 3
6. 0. 3
____3963 [3. x]3. 1. 6
3. 1. 6
----______3963 [4. x]4. 3. 0
4. 3. 0
4. 3. 0
----
$ git push heroku master
-----> PHP app detected
…
963 [5. x]5. 3. 7
5. 3. 7
5. 3. 7
5. 3. 7
5. 3. 7
5. 3. 7
____39661. 2. 0
1. 2. 0
1. 2. 0
1. 2. 0
1. 2. 0
1. 2. 0
[1]. Tiện ích mở rộng này không khả dụng trên ngăn xếp
{
  "require": {
    "php": "^8.1.0"
  }
}
0.
[2]. Tiện ích mở rộng này không khả dụng trên ngăn xếp
{
  "require": {
    "php": "^8.1.0"
  }
}
1.
[3]. Tiện ích mở rộng này không khả dụng trên ngăn xếp
{
  "require": {
    "php": "^8.1.0"
  }
}
2.

Cột được đánh dấu bằng nền và chữ màu vàng cho biết loạt bản phát hành PHP chỉ nhận các bản cập nhật bảo mật từ những người bảo trì ngược dòng. Các cột được đánh dấu bằng chữ và nền màu đỏ cho biết chuỗi bản phát hành PHP đã hết hạn sử dụng và không còn nhận được bất kỳ bản cập nhật nào từ phía trên .

Sử dụng tiện ích mở rộng tùy chọn

Bạn có thể khai báo bất kỳ tiện ích mở rộng tùy chọn nào mà bạn muốn sử dụng qua

-----> Installing platform packages...
       - php [7.4.19]
3 bằng cách sử dụng ;

Ví dụ: để bật bcmath, MCrypt, Memcached và MongoDB của bên thứ ba

-----> Installing platform packages...
       - php [7.4.19]
1

Bạn nên sử dụng “

$ git push heroku master
-----> PHP app detected
…
972” làm bộ chọn phiên bản khi chỉ định các tiện ích mở rộng đi kèm với PHP, vì số phiên bản của chúng có thể rất không nhất quán [chúng thường báo cáo phiên bản của chúng là “0”]

Tiếp theo, đảm bảo rằng các yêu cầu mới của bạn được "đóng băng" thành

-----> Installing platform packages...
       - php [7.4.19]
8 bằng cách chạy

-----> Installing platform packages...
       - php [7.4.19]
6

Cuối cùng, đừng quên

-----> Installing platform packages...
       - php [7.4.19]
18 và
-----> Installing platform packages...
       - php [7.4.19]
19 cả hai tệp

Nếu bạn không có tiện ích mở rộng mong muốn có sẵn cục bộ trên máy tính của mình, bước

-----> Installing platform packages...
       - php [7.4.19]
9 sẽ không thành công vì không thể đáp ứng các yêu cầu trong
-----> Installing platform packages...
       - php [7.4.19]
3. Nếu bạn không thể cài đặt tiện ích mở rộng bị thiếu trên máy tính của mình bằng cách sử dụng
$ git push heroku master
-----> PHP app detected
…
978,
$ git push heroku master
-----> PHP app detected
…
979 hoặc các phương pháp tương tự [điều mà bạn hoàn toàn nên làm để duy trì tính tương đương của nhà phát triển/sản phẩm], bạn có thể hướng dẫn nhà soạn nhạc bỏ qua phần bị thiếu [cái gọi là “nền tảng”

-----> Installing platform packages...
       - php [7.4.19]
1

Cờ

$ git push heroku master
-----> PHP app detected
…
980 tương tự cũng có thể được sử dụng khi chạy
$ git push heroku master
-----> PHP app detected
…
981 trong các lần cài đặt phụ thuộc tiếp theo trong môi trường mới, chẳng hạn như. g. trên máy tính của các nhà phát triển khác, nơi tiện ích mở rộng không khả dụng tương tự

Trong lần đẩy tiếp theo, Heroku sẽ cài đặt và kích hoạt các phần mở rộng PHP tương ứng

-----> Installing platform packages...
       - php [7.4.19]
3

Bất kỳ tiện ích mở rộng PHP nào được yêu cầu bởi phần phụ thuộc của dự án được đẩy tới Heroku sẽ được cài đặt tự động, vì danh sách các tiện ích mở rộng sẽ được cài đặt được đọc từ

-----> Installing platform packages...
       - php [7.4.19]
8

Ví dụ: nếu một dự án phụ thuộc vào

$ git push heroku master
-----> PHP app detected
…
983 PHP SDK cho Stripe, tiện ích mở rộng
$ git push heroku master
-----> PHP app detected
…
984 do SDK Stripe yêu cầu sẽ tự động được cài đặt khi triển khai mà không cần phải liệt kê rõ ràng gói
$ git push heroku master
-----> PHP app detected
…
985 trong phần
-----> Installing platform packages...
       - php [7.4.19]
7 của
-----> Installing platform packages...
       - php [7.4.19]
3 chính của bạn

Xử lý các tiện ích mở rộng được cung cấp bởi các gói userland

Các gói Trình soạn thảo nhất định, chẳng hạn như các Polyfill Symfony khác nhau, khai báo một tiện ích mở rộng PHP gốc là

$ git push heroku master
-----> PHP app detected
…
988d trong siêu dữ liệu gói của chúng [và triển khai chức năng của tiện ích mở rộng đó, một phần hoặc toàn bộ, hoàn toàn bằng mã PHP], điều này khiến Trình soạn thảo coi chúng là một sự thay thế có thể có của

Trong quá trình xây dựng, các khai báo “polyfill” này được Heroku tôn vinh khi cài đặt các gói nền tảng, sử dụng chính xác các quy tắc mà Trình soạn thảo áp dụng cho

Điều này có nghĩa là yêu cầu của

-----> Installing platform packages...
       - php [7.4.19]
3 [hoặc bất kỳ sự phụ thuộc nào] đối với e. g.
$ git push heroku master
-----> PHP app detected
…
985 sẽ không dẫn đến việc cài đặt tiện ích mở rộng gốc
$ git push heroku master
-----> PHP app detected
…
985 nếu gói
$ git push heroku master
-----> PHP app detected
…
992 cũng có trong
-----> Installing platform packages...
       - php [7.4.19]
8, vì
$ git push heroku master
-----> PHP app detected
…
992 khai báo
$ git push heroku master
-----> PHP app detected
…
985 là
$ git push heroku master
-----> PHP app detected
…
988d

-----> Installing platform packages...
       - php [7.4.19]
2

Để có hiệu suất và khả năng tương thích tối đa, sau khi quá trình giải quyết ban đầu các phụ thuộc gói nền tảng kết thúc theo cách này, bộ phận Hỗ trợ PHP của Heroku sau đó sẽ cố gắng cài đặt các phiên bản gốc của tất cả các tiện ích mở rộng mà các gói vùng đất người dùng đã khai báo là

$ git push heroku master
-----> PHP app detected
…
988d

$ git push heroku master
-----> PHP app detected
…
90

Những nỗ lực cài đặt này có thể không phải lúc nào cũng thành công vì tiện ích mở rộng được đề cập có thể không có sẵn trên Heroku hoặc cho phiên bản PHP đã chọn

$ git push heroku master
-----> PHP app detected
…
91

Đặc biệt, sẽ không có thay đổi nào đối với các gói nền tảng đã được giải quyết. nếu một biến thể gốc không có sẵn cho phiên bản PHP đã cài đặt, thì sẽ không hạ cấp xuống phiên bản PHP có tiện ích mở rộng như vậy, ngay cả khi phiên bản PHP thấp hơn đó sẽ được tất cả các phụ thuộc khác cho phép

Hành vi này đảm bảo rằng các gói polyfill vùng người dùng có thể phục vụ chính xác mục đích của chúng khi cần thiết, chẳng hạn như khi đóng vai trò thay thế cho tiện ích mở rộng không còn đi kèm với PHP [như e. g.

$ git push heroku master
-----> PHP app detected
…
998 làm cho
$ git push heroku master
-----> PHP app detected
…
999 trong ví dụ trên], đồng thời đảm bảo rằng tiện ích mở rộng PHP gốc được đề cập được cài đặt bất cứ khi nào có thể để có hiệu suất và khả năng tương thích tối đa

tùy chỉnh cài đặt

PHP

Bất kỳ tệp

-----> Installing platform packages...
       - php [7.4.19]
00 nào được đặt vào một dự án theo hướng dẫn trong hướng dẫn sử dụng PHP sẽ được tải sau tệp chính
{
  "require": {
    "php": "^8.1.0"
  }
}
4. Bạn có thể sử dụng những thứ này để đặt bất kỳ lệnh nào được phép trong ngữ cảnh
-----> Installing platform packages...
       - php [7.4.19]
02,
-----> Installing platform packages...
       - php [7.4.19]
03 và
-----> Installing platform packages...
       - php [7.4.19]
04

Để biết thêm chi tiết về điều này và các cách tùy chỉnh cài đặt khác cho thời gian chạy PHP, vui lòng tham khảo bài viết tương ứng của Trung tâm nhà phát triển

Xây dựng hành vi

Cài đặt phụ thuộc

Lệnh sau được chạy trong quá trình triển khai để giải quyết các phụ thuộc trừ khi

-----> Installing platform packages...
       - php [7.4.19]
3 trống và không có
-----> Installing platform packages...
       - php [7.4.19]
8

$ git push heroku master
-----> PHP app detected
…
92

Heroku sẽ không cài đặt các phụ thuộc phát triển từ phần

-----> Installing platform packages...
       - php [7.4.19]
07 của
-----> Installing platform packages...
       - php [7.4.19]
3. Tuy nhiên, nếu phần
-----> Installing platform packages...
       - php [7.4.19]
07 chứa yêu cầu phiên bản thời gian chạy PHP hoặc liệt kê một phụ thuộc có chứa yêu cầu đó, thì phần
-----> Installing platform packages...
       - php [7.4.19]
7 của
-----> Installing platform packages...
       - php [7.4.19]
3 cũng phải chứa yêu cầu phiên bản thời gian chạy PHP hoặc liệt kê một phụ thuộc có chứa yêu cầu đó. Điều này là để đảm bảo rằng Heroku không chọn phiên bản thời gian chạy PHP mặc định xung đột với cài đặt của các môi trường khác [bao gồm các phụ thuộc
-----> Installing platform packages...
       - php [7.4.19]
07]

Phiên bản Composer đã cài đặt sẽ được in để bạn tham khảo trước khi quá trình cài đặt bắt đầu. Các bản dựng được chạy bằng phiên bản Composer [1. x, 2. 2. x LTS hoặc 2. 3+] tương thích với

-----> Installing platform packages...
       - php [7.4.19]
8 của ứng dụng. Phiên bản tương ứng của Trình soạn thảo có sẵn trên
-----> Installing platform packages...
       - php [7.4.19]
14 khi chạy ứng dụng dưới tên lệnh
-----> Installing platform packages...
       - php [7.4.19]
15

Thư mục bộ nhớ cache Trình soạn thảo của ứng dụng được duy trì giữa các bản dựng để tăng tốc độ cài đặt gói trong các lần triển khai tiếp theo

Phiên bản Composer có sẵn

Các phiên bản Composer sau đây hiện có sẵn

Nhà soạn nhạc / sê-ri
{
  "require": {
    "php": "^8.1.0"
  }
}
0
{
  "require": {
    "php": "^8.1.0"
  }
}
1
{
  "require": {
    "php": "^8.1.0"
  }
}
2Nhà soạn nhạc 1. x1. 10. 261. 10. 26-Nhà soạn nhạc 2 LTS2. 2. 182. 2. 182. 2. 18Nhà soạn nhạc 2. x2. 4. 42. 4. 42. 4. 4

nhà soạn nhạc 2. 2 là sê-ri Trình soạn thảo hỗ trợ dài hạn [LTS] và sẽ được sử dụng cho các bản dựng ứng dụng có tệp khóa do Trình soạn thảo 2 tạo ra. 0, 2. 1 hoặc 2. 2 hoặc bởi các ứng dụng sử dụng phiên bản PHP cũ hơn 7. 2. 5

Bước biên dịch tùy chỉnh

Đối với các ứng dụng muốn thực hiện một bước biên dịch bổ sung trong quá trình xây dựng mà không phải là một phần của tiêu chuẩn, ví dụ: quy trình biên dịch nội dung hoặc làm nóng trước bộ đệm, một

-----> Installing platform packages...
       - php [7.4.19]
20 , nếu có trong
-----> Installing platform packages...
       - php [7.4.19]
3, sẽ được thực thi bằng cách sử dụng lệnh sau

$ git push heroku master
-----> PHP app detected
…
93

Bất kỳ lệnh tập lệnh tùy chỉnh nào như vậy được xác định trong trình soạn thảo. json có thể ;

$ git push heroku master
-----> PHP app detected
…
94

Nếu bạn cần thực thi

-----> Installing platform packages...
       - php [7.4.19]
15 hoặc
-----> Installing platform packages...
       - php [7.4.19]
15 trong bất kỳ tập lệnh Trình soạn thảo nào, hãy luôn tham khảo các tệp thực thi bằng ký hiệu hoặc ký hiệu viết tắt. Điều này sẽ luôn gọi đúng PHP hoặc Trình soạn thảo có thể thực thi được trong bất kỳ môi trường nào và cũng đảm bảo bất kỳ , bao gồm PHP
-----> Installing platform packages...
       - php [7.4.19]
14 phù hợp, được áp dụng

 

Composer's

-----> Installing platform packages...
       - php [7.4.19]
27 là , làm cho các tệp nhị phân được cài đặt bởi các phần phụ thuộc có thể dễ dàng truy cập dưới dạng các lệnh CLI khi viết tập lệnh mà không phải sử dụng
-----> Installing platform packages...
       - php [7.4.19]
29 hoặc tiền tố tương tự

kho tư nhân

Để sử dụng các kho lưu trữ riêng như Packagist riêng hoặc các gói từ nguồn yêu cầu xác thực [chẳng hạn như từ kho lưu trữ GitHub riêng], Trình soạn thảo phải được cung cấp chi tiết xác thực [thường là mã thông báo do nhà cung cấp hoặc dịch vụ tạo]

Trên một máy phát triển, chúng thường được Composer lưu trữ trong , nhưng trên Heroku, những bí mật đó được lưu trữ dưới dạng biến môi trường. Các ;

Các mục sau đây được phép làm khóa cấp cao nhất trong tài liệu JSON

Sau đó, mỗi mục chứa một hàm băm tên miền dưới dạng khóa và chi tiết xác thực dưới dạng giá trị;

Khi sử dụng GitHub Enterprise hoặc phiên bản GitLab Tự quản lý, hãy nhớ đặt tùy chọn hoặc cấu hình bên trong

-----> Installing platform packages...
       - php [7.4.19]
3 của dự án của bạn

Ví dụ: để lưu trữ chi tiết xác thực cho tài khoản, nhà đóng gói riêng, bạn sẽ đặt biến

-----> Installing platform packages...
       - php [7.4.19]
31 bằng cách sử dụng
-----> Installing platform packages...
       - php [7.4.19]
42 với chi tiết
-----> Installing platform packages...
       - php [7.4.19]
33 [tất nhiên là thay thế “YOURTOKEN” bằng mã thông báo thực mà Nhà đóng gói riêng đã tạo]

$ git push heroku master
-----> PHP app detected
…
95

Để đưa ra một ví dụ khác, khi sử dụng , mã thông báo OAuth cá nhân có thể được đặt để xác thực. Sau khi tạo Mã thông báo mới, bạn có thể đặt nó trên Heroku [tất nhiên là thay thế “YOURTOKEN” bằng mã thông báo thực mà GitHub đã tạo]

$ git push heroku master
-----> PHP app detected
…
96

URL kho lưu trữ riêng trong

-----> Installing platform packages...
       - php [7.4.19]
3 của bạn phải sử dụng giao thức
-----> Installing platform packages...
       - php [7.4.19]
45 chứ không phải
-----> Installing platform packages...
       - php [7.4.19]
46 để Composer có thể sử dụng mã thông báo OAuth để xác thực

Tất nhiên, một số bộ chi tiết xác thực cũng có thể được kết hợp thành một tài liệu duy nhất;

$ git push heroku master
-----> PHP app detected
…
97

Bạn có thể sử dụng ngắt dòng trong dấu ngoặc kép khi đặt biến môi trường trên Heroku như trong ví dụ trên, nhưng bạn phải đảm bảo rằng dấu ngoặc kép là chính xác khi chạy lệnh

-----> Installing platform packages...
       - php [7.4.19]
42

cấu hình nhà soạn nhạc

Để thuận tiện, các cài đặt sau cho Trình soạn thảo được đặt tự động bằng các biến môi trường

  • -----> Installing platform packages...
           - php [7.4.19]
    
    48 mặc định là bộ nhớ dyno có sẵn;
  • -----> Installing platform packages...
           - php [7.4.19]
    
    49 mặc định là
    -----> Installing platform packages...
           - php [7.4.19]
    
    11;
  • -----> Installing platform packages...
           - php [7.4.19]
    
    51 mặc định là
    -----> Installing platform packages...
           - php [7.4.19]
    
    11

hành vi thời gian chạy

Biến môi trường

-----> Installing platform packages...
       - php [7.4.19]
14 chứa tất cả các đường dẫn cần thiết để ứng dụng hoạt động trong thời gian chạy. Được thêm vào
-----> Installing platform packages...
       - php [7.4.19]
14 để thuận tiện

Cấu hình PHP-FPM

PHP-FPM được thiết lập để tự động sinh ra một số quy trình công nhân phù hợp tùy thuộc vào kích thước dyno và PHP

-----> Installing platform packages...
       - php [7.4.19]
14 được định cấu hình. Vui lòng tham khảo bài viết Tối ưu hóa ứng dụng PHP đồng thời để biết thêm chi tiết

Hết giờ

Khi một yêu cầu đạt đến thời gian chờ yêu cầu của bộ định tuyến Heroku, một quy trình PHP-FPM sẽ tiếp tục chạy, có khả năng miễn là nó mất khoảng thời gian. g. thời gian chờ bên ngoài xảy ra. Điều này sẽ ràng buộc quy trình PHP-FPM đó, sau đó quy trình này không còn có thể đáp ứng các yêu cầu đến khác

Đối với các ứng dụng sử dụng PHP 7. 4 trở lên, theo mặc định, PHP-FPM sẽ do đó

  • ghi nhật ký truy vết ngược của các yêu cầu mất hơn ba giây [chỉ thị
    -----> Installing platform packages...
           - php [7.4.19]
    
    57] và
  • chấm dứt các yêu cầu đã vượt quá thời gian thực hiện là 30 giây [chỉ thị ______058] và do đó có khả năng đã hết thời gian chờ

Bạn có thể thay đổi các cài đặt cấu hình này [hoặc khác]

cấu hình nhà soạn nhạc

Để thuận tiện, các cài đặt sau cho Trình soạn thảo được đặt tự động bằng các biến môi trường

  • -----> Installing platform packages...
           - php [7.4.19]
    
    48 mặc định là bộ nhớ dyno có sẵn;
  • -----> Installing platform packages...
           - php [7.4.19]
    
    49 mặc định là
    -----> Installing platform packages...
           - php [7.4.19]
    
    11;
  • -----> Installing platform packages...
           - php [7.4.19]
    
    51 mặc định là
    -----> Installing platform packages...
           - php [7.4.19]
    
    11;
  • -----> Installing platform packages...
           - php [7.4.19]
    
    64 mặc định là
    -----> Installing platform packages...
           - php [7.4.19]
    
    13

máy chủ web

Heroku hỗ trợ Apache HTTPD 2. 4 và Nginx là máy chủ Web chuyên dụng. Đối với mục đích thử nghiệm, tất nhiên người dùng cũng có thể sử dụng máy chủ Web tích hợp sẵn của PHP, mặc dù điều này không được khuyến khích

Trong trường hợp không có mục nhập

-----> Installing platform packages...
       - php [7.4.19]
66 cho loại dyno “web”, máy chủ Web Apache sẽ được sử dụng cùng với thời gian chạy PHP

Các phiên bản máy chủ web sau được hỗ trợ và sẽ tự động được cài đặt trong quá trình xây dựng

Máy chủ web / sê-ri
{
  "require": {
    "php": "^8.1.0"
  }
}
0
{
  "require": {
    "php": "^8.1.0"
  }
}
1
{
  "require": {
    "php": "^8.1.0"
  }
}
2Apache 2. x2. 4. 542. 4. 542. 4. 54Nginx 1. x1. 22. 11. 22. 11. 22. 1

apache

Giao diện Apache với PHP-FPM thông qua FastCGI bằng cách sử dụng

-----> Installing platform packages...
       - php [7.4.19]
70

Để khởi động Apache cùng với PHP-FPM và tất cả các cài đặt chính xác, hãy sử dụng tập lệnh

-----> Installing platform packages...
       - php [7.4.19]
71

$ git push heroku master
-----> PHP app detected
…
98

Theo mặc định, thư mục gốc của dự án của bạn sẽ được sử dụng làm thư mục. Để sử dụng thư mục con, bạn có thể chuyển tên của thư mục con làm đối số cho tập lệnh khởi động, e. g. “công khai_html”

$ git push heroku master
-----> PHP app detected
…
99

Bạn có thể sử dụng các tệp

-----> Installing platform packages...
       - php [7.4.19]
72 thông thường để tùy chỉnh hành vi của Apache, chẳng hạn như. g. để viết lại URL. Để biết thêm chi tiết về điều này và các tùy chọn khác để tùy chỉnh cài đặt cho Apache, vui lòng tham khảo bài viết tương ứng của Trung tâm nhà phát triển

Nginx

Giao diện Nginx với PHP-FPM thông qua FastCGI

Để bắt đầu Nginx cùng với PHP-FPM và tất cả các cài đặt chính xác, hãy sử dụng tập lệnh

-----> Installing platform packages...
       - php [7.4.19]
73

-----> Installing platform packages...
       - php [7.4.19]
0

Theo mặc định, thư mục gốc của dự án của bạn sẽ được sử dụng làm thư mục. Để sử dụng thư mục con, bạn có thể chuyển tên của thư mục con làm đối số cho tập lệnh khởi động, e. g. “công khai_html”

-----> Installing platform packages...
       - php [7.4.19]
1

Để biết thêm chi tiết về các cách tùy chỉnh cài đặt khác nhau cho Nginx, vui lòng tham khảo bài viết tương ứng của Trung tâm nhà phát triển

Máy chủ web tích hợp PHP

Đối với mục đích thử nghiệm, bạn có thể khởi động máy chủ Web tích hợp sẵn của PHP bằng cách sử dụng

-----> Installing platform packages...
       - php [7.4.19]
74 làm mục nhập cho “web” trong
-----> Installing platform packages...
       - php [7.4.19]
66 của bạn

-----> Installing platform packages...
       - php [7.4.19]
2

-----> Installing platform packages...
       - php [7.4.19]
66 phải chứa
-----> Installing platform packages...
       - php [7.4.19]
77 trong dòng hiển thị ở trên. Nó được Heroku sử dụng trong thời gian chạy để liên kết động phiên bản máy chủ web với đúng cổng cho dyno

 

Điều quan trọng là phải liên kết với tất cả các giao diện bằng cách sử dụng

-----> Installing platform packages...
       - php [7.4.19]
78, nếu không, định tuyến của Heroku sẽ không thể chuyển tiếp yêu cầu đến máy chủ web

Bạn cũng có thể chuyển một gốc tài liệu thay thế hoặc sử dụng cái gọi là tập lệnh bộ định tuyến để xử lý các yêu cầu. Để biết chi tiết, vui lòng tham khảo tài liệu dành cho máy chủ Web tích hợp

Chủ Đề