Kiểm tra json trống php

PHP là ngôn ngữ kịch bản máy chủ và là công cụ mạnh mẽ để tạo các trang Web động và tương tác

PHP là một giải pháp thay thế được sử dụng rộng rãi, miễn phí và hiệu quả cho các đối thủ cạnh tranh như ASP của Microsoft

Bắt đầu học PHP ngay bây giờ »

Học dễ dàng với "PHP Tryit"

Với trình chỉnh sửa "PHP Tryit" trực tuyến của chúng tôi, bạn có thể chỉnh sửa mã PHP và nhấp vào nút để xem kết quả

Thí dụ



echo "Tập lệnh PHP đầu tiên của tôi. ";
?>


Tự mình thử »

Nhấp vào nút "Tự dùng thử" để xem nó hoạt động như thế nào

Bài tập PHP

Kiểm tra bản thân với các bài tập

Tập thể dục

Chèn phần còn thiếu của mã bên dưới để xuất "Xin chào thế giới"


Cung cấp câu trả lời "

Ví dụ PHP

Tìm hiểu bằng các ví dụ. Hướng dẫn này bổ sung tất cả các giải thích với các ví dụ rõ ràng

Xem tất cả các ví dụ về PHP

Bài kiểm tra PHP

Học bằng cách làm bài kiểm tra. Bài kiểm tra này sẽ cung cấp cho bạn tín hiệu về mức độ bạn biết hoặc không biết về PHP

Bắt đầu bài kiểm tra PHP

Việc học của tôi

Theo dõi tiến trình của bạn với chương trình "Học tập của tôi" miễn phí tại W3Schools

Đăng nhập vào tài khoản của bạn và bắt đầu kiếm điểm

Đây là một tính năng tùy chọn. Bạn có thể học W3Schools mà không cần sử dụng My Learning


Tài liệu tham khảo PHP

Tài liệu tham khảo PHP của W3Schools chứa các danh mục khác nhau của tất cả các hàm, từ khóa và hằng số PHP, cùng với các ví dụ

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 phần “Quản lý phụ thuộc” của hướng dẫn Triển khai PHP để biết 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

  • {
      "require": {
        "php": "^8.1.0"
      }
    }
    
    5 được đặt thành
    {
      "require": {
        "php": "^8.1.0"
      }
    }
    
    6
  • {
      "require": {
        "php": "^8.1.0"
      }
    }
    
    7 đượ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
  • -----> Installing platform packages...
           - php [7.4.19]
    
    80 được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    81
  • -----> Installing platform packages...
           - php [7.4.19]
    
    82 được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    83 [đối với PHP 7. 1 trở lên]
  • -----> Installing platform packages...
           - php [7.4.19]
    
    84 được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    85
  • -----> Installing platform packages...
           - php [7.4.19]
    
    86 được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    87
  • -----> Installing platform packages...
           - php [7.4.19]
    
    88 được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    89

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]
    
    80 được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    81
  • -----> Installing platform packages...
           - php [7.4.19]
    
    82 được đặt thành
    -----> Installing platform packages...
           - php [7.4.19]
    
    83

PHP CLI

Chỉ thị

-----> Installing platform packages...
       - php [7.4.19]
84 PHP INI cho tệp thực thi
-----> Installing platform packages...
       - php [7.4.19]
85 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]
86 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]
87

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]
85 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 qua Gói Nền tảng Trình soạn thảo 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

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

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

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

Thay vào đó, hãy sử dụng các toán tử phát hành quan trọng tiếp theo “

-----> Installing platform packages...
       - php [7.4.19]
89” hoặc “
-----> Installing platform packages...
       - php [7.4.19]
90” để đả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. “______491” 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. ] nhưng không phải PHP 9, bạn sẽ chỉ định “______492”

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]
85” 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]
89. Đ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]
8

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

-----> Installing platform packages...
       - php [7.4.19]
98 và
-----> Installing platform packages...
       - php [7.4.19]
99 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, 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 tiện ích mở rộng đó có phải được bật rõ ràng thông qua

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

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✔





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





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





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





-----> Installing platform packages...
       - php [7.4.19]
603✱
-----
-----> Installing platform packages...
       - php [7.4.19]
604✔





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





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





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





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





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





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





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





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





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





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





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





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





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





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





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





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





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





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





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




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





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





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





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





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





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



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





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





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





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





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





✔: enabled by default
✱. tùy chọn, có thể được bật qua
-----> Installing platform packages...
       - php [7.4.19]
3

Cột được đánh dấu bằng văn bản và nền màu vàng cho biết chuỗi phát hành PHP chỉ . 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ỳ 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 được bật rõ ràng thông qua

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

Tiện ích mở rộng PHP 7. 1PHP7. 2PHP7. 3PHP7. 4PHP 8. 0PHP8. 1____46371. 11. 0
1. 11. 0
1. 11. 0
1. 11. 0
1. 11. 0
1. 11. 0
______46385. 1. 21
5. 1. 21
5. 1. 21
5. 1. 21
5. 1. 21
5. 1. 21
____46391. 84. 0
1. 84. 0
1. 84. 0
1. 84. 0
1. 84. 0
1. 84. 0
____46401. 3. 2
1. 3. 2
1. 3. 2
-----------46411. 1. 5
1. 1. 5
1. 1. 5
1. 1. 5
1. 1. 5
1. 1. 5
______4642 [2. x]2. 5. 7
2. 5. 7
2. 5. 7
2. 5. 7
--______4642 [3. x]3. 0. 8
3. 0. 8
3. 0. 8
3. 0. 8
3. 0. 8
3. 0. 8
______46443. 7. 0
3. 7. 0
3. 7. 0
3. 7. 0
3. 7. 0
3. 7. 0
____46453. 2. 0
3. 2. 0
3. 2. 0
3. 2. 0
3. 2. 0
3. 2. 0
____46461. 11. 1
1. 14. 2
1. 14. 2
1. 14. 2
1. 14. 2
1. 14. 2
______4647 [8. x]8. 7. 0. 242
8. 7. 0. 242
8. 7. 0. 242​[​2​]
---
-----> Installing platform packages...
       - php [7.4.19]
647 [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
____4647 [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
____46502. 0. 7
2. 0. 7
2. 0. 7
2. 0. 7
2. 0. 7
2. 0. 7
______4651-1. 0. 11
1. 0. 11
1. 0. 11
1. 0. 11
1. 0. 11
____4652 [3. x]3. 4. 5
3. 4. 5
3. 4. 5​[​2​]
----
-----> Installing platform packages...
       - php [7.4.19]
652 [4. x]-4. 1. 3
4. 1. 3
4. 1. 3
--
-----> Installing platform packages...
       - php [7.4.19]
652 [5. x]---5. 1. 0
5. 1. 0
5. 1. 0
______46552. 2. 0
2. 2. 0
2. 2. 0
2. 2. 0
2. 2. 0
2. 2. 0
______4656 [0. x]-0. 7. 0
0. 7. 0​[​2​]
0. 7. 0​[​2​]
--
-----> Installing platform packages...
       - php [7.4.19]
656 [1. x]-1. 1. 0
1. 2. 0
1. 2. 0
1. 2. 0
1. 2. 0
____46582. 0. 1
2. 0. 1
2. 0. 1
2. 0. 1
2. 0. 1
2. 0. 1
____4659 [3. x]3. 1. 3
3. 1. 3
3. 1. 3​[​2​]
---
-----> Installing platform packages...
       - php [7.4.19]
659 [4. x]4. 1. 2
4. 1. 2
4. 1. 2
4. 1. 2
--______4659 [5. x]5. 0. 2
5. 0. 2
5. 0. 2
5. 0. 2
5. 0. 2
5. 0. 2​[​3​]
____4659 [6. x]6. 0. 3
6. 0. 3
6. 0. 3
6. 0. 3
6. 0. 3
6. 0. 3
____4663 [3. x]3. 1. 6
3. 1. 6
----______4663 [4. x]4. 3. 0
4. 3. 0
4. 3. 0​[​2​]
----
-----> Installing platform packages...
       - php [7.4.19]
663 [5. x]5. 3. 7
5. 3. 7
5. 3. 7
5. 3. 7
5. 3. 7
5. 3. 7
____46661. 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 chuỗi 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 thông qua

-----> Installing platform packages...
       - php [7.4.19]
3 bằng cách sử dụng Gói Nền tảng Trình soạn thảo;

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

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

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

-----> Installing platform packages...
       - php [7.4.19]
672” 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]
8

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

-----> Installing platform packages...
       - php [7.4.19]
98 và
-----> Installing platform packages...
       - php [7.4.19]
99 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
-----> Installing platform packages...
       - php [7.4.19]
678,
-----> Installing platform packages...
       - php [7.4.19]
679 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 nhà phát triển/sản phẩm], bạn có thể hướng dẫn nhà soạn nhạc bỏ qua tiện ích bị thiếu [cái gọi là “nền tảng”

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

Cờ

-----> Installing platform packages...
       - php [7.4.19]
680 tương tự cũng có thể được sử dụng khi chạy
-----> Installing platform packages...
       - php [7.4.19]
681 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

-----> Installing platform packages...
       - php [7.4.19]
683 PHP SDK cho Stripe, tiện ích mở rộng
-----> Installing platform packages...
       - php [7.4.19]
684 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
-----> Installing platform packages...
       - php [7.4.19]
685 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 Symfony Polyfill khác nhau, khai báo một tiện ích mở rộng PHP gốc là

-----> Installing platform packages...
       - php [7.4.19]
688d 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 việc cài đặt các gói

Đ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.
-----> Installing platform packages...
       - php [7.4.19]
685 sẽ không dẫn đến việc cài đặt tiện ích mở rộng
-----> Installing platform packages...
       - php [7.4.19]
685 gốc nếu gói
-----> Installing platform packages...
       - php [7.4.19]
692 cũng có trong
-----> Installing platform packages...
       - php [7.4.19]
8, vì
-----> Installing platform packages...
       - php [7.4.19]
692 khai báo
-----> Installing platform packages...
       - php [7.4.19]
685 là
-----> Installing platform packages...
       - php [7.4.19]
688d

-----> 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à

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

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

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

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

Đặ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.

-----> Installing platform packages...
       - php [7.4.19]
698 làm cho
-----> Installing platform packages...
       - php [7.4.19]
699 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

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

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 tập lệnh Trình soạn thảo

-----> Installing platform packages...
       - php [7.4.19]
19 tiêu chuẩn, ví dụ: quy trình biên dịch nội dung hoặc khởi động trước bộ đệm, lệnh tùy chỉnh
-----> Installing platform packages...
       - php [7.4.19]
20, nếu có trong
-----> Installing platform packages...
       - php [7.4.19]
3, sẽ là

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

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ể là một chuỗi đơn hoặc một mảng gồm nhiều lệnh để thực thi;

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

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

-----> Installing platform packages...
       - php [7.4.19]
85 hoặc
-----> Installing platform packages...
       - php [7.4.19]
15 trong bất kỳ tập lệnh Composer nào, hãy luôn tham khảo các tệp thực thi bằng cách sử dụng ký hiệu viết tắt
-----> Installing platform packages...
       - php [7.4.19]
24 hoặc
-----> Installing platform packages...
       - php [7.4.19]
25. Đ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 mọi cấu hình Trình soạn thảo, bao gồm PHP
-----> Installing platform packages...
       - php [7.4.19]
84 phù hợp, được áp dụng

 

-----> Installing platform packages...
       - php [7.4.19]
27 của nhà soạn nhạc được đẩy lên trên
-----> Installing platform packages...
       - php [7.4.19]
14 trong khi thực thi lệnh, 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 lệnh CLI khi viết tập lệnh mà không cần 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áy phát triển, chúng thường được Composer lưu trữ trong

-----> Installing platform packages...
       - php [7.4.19]
30, nhưng trên Heroku, những bí mật đó được lưu trữ dưới dạng biến môi trường. Biến môi trường
-----> Installing platform packages...
       - php [7.4.19]
31 được Composer tự động đọ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

  • -----> 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

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ớ cũng đặt tùy chọn cấu hình

-----> Installing platform packages...
       - php [7.4.19]
38 hoặc
-----> Installing platform packages...
       - php [7.4.19]
39 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 một tài khoản Packagist Riêng tư, 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 các 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 tế mà Packagist Riêng tư đã tạo]

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

Để đưa ra một ví dụ khác, khi sử dụng mã từ kho lưu trữ GitHub riêng làm phần phụ thuộc của Trình soạn thảo, 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]

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

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 giao thức
-----> 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;

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

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]
    
    81;
  • -----> Installing platform packages...
           - php [7.4.19]
    
    51 mặc định là
    -----> Installing platform packages...
           - php [7.4.19]
    
    81

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. Nhà soạn nhạc
-----> Installing platform packages...
       - php [7.4.19]
27 đượ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]
84 đượ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ể điều chỉnh cài đặt cho PHP-FPM để 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]
    
    81;
  • -----> Installing platform packages...
           - php [7.4.19]
    
    51 mặc định là
    -----> Installing platform packages...
           - php [7.4.19]
    
    81;
  • -----> Installing platform packages...
           - php [7.4.19]
    
    64 mặc định là
    -----> Installing platform packages...
           - php [7.4.19]
    
    83

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

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

Theo mặc định, thư mục gốc của dự án của bạn sẽ được sử dụng làm tài liệu gố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]
69

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 tài liệu gố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ủ Đề