Phiên bản PHP nào hiện tại?

Nếu bạn không thể làm cho một cái gì đó hoạt động và nghĩ rằng đó có thể là do bạn sử dụng sai phiên bản PHP, thì có một cách thực sự đơn giản để kiểm tra phiên bản hiện tại.  

Show

Các phiên bản PHP khác nhau có thể có các cài đặt mặc định khác nhau và trong trường hợp các phiên bản mới hơn, có thể có các chức năng mới

Nếu hướng dẫn PHP đưa ra hướng dẫn cho một phiên bản PHP cụ thể, điều quan trọng là phải hiểu cách kiểm tra phiên bản bạn đã cài đặt

Cách kiểm tra phiên bản PHP

Chạy một tệp PHP đơn giản sẽ không chỉ cho bạn biết phiên bản PHP của bạn mà còn có rất nhiều thông tin về tất cả các cài đặt PHP của bạn. Chỉ cần đặt một dòng mã PHP này vào một tệp văn bản trống và mở nó trên máy chủ

<?php phpinfo() ?>

Dưới đây là cách kiểm tra phiên bản PHP được cài đặt cục bộ. Bạn có thể chạy cái này trong Command Prompt trong Windows hoặc Terminal cho Linux/macOS

php -v

Đây là một ví dụ đầu ra

PHP 5.6.35 (cli) (built: Mar 29 2018 14:27:15)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Phiên bản PHP không hiển thị trong Windows?

Cho rằng bạn thực sự đang chạy PHP trên máy chủ web của mình, lý do phổ biến nhất khiến phiên bản PHP không hiển thị là nếu đường dẫn đến PHP không được thiết lập với Windows

Bạn có thể thấy lỗi như thế này nếu biến môi trường chính xác không được định cấu hình

‘php.exe’ is not recognized as an internal or external command, operable program or batch file.

Trong Dấu nhắc Lệnh, nhập lệnh sau, trong đó đường dẫn sau "C. " là đường dẫn đến PHP (của bạn có thể khác)

set PATH=%PATH%;C:\php\php.exe

Trích dẫn bài viết này

Định dạng

mla apa chicago

trích dẫn của bạn

Bradley, Angela. "Đây là cách kiểm tra phiên bản PHP bạn đang chạy. "ThinkCo. https. //www. suy nghĩ. com/what-version-of-php-running-2694207 (truy cập ngày 16 tháng 12 năm 2022)

PHP8. 1 được phát hành vào ngày 25 tháng 11 năm 2021. Hiện tại nó là phiên bản PHP mới nhất. Trong bài đăng này, chúng ta sẽ lần lượt xem xét tất cả các tính năng, cải tiến hiệu suất, thay đổi và ngừng sử dụng

# Các tính năng mới

Như với mọi bản phát hành, PHP 8. 1 thêm một số tính năng mới hay. Hãy nhớ rằng danh sách này sẽ tăng lên trong năm

👍

👍

👍 0

# Enums RFC

Enums sẽ được thêm vào trong PHP 8. 1. Nếu bạn không chắc chúng có thể được sử dụng để làm gì, bạn có thể đọc về chúng tại đây

Thêm enums sẽ là một cải tiến đáng kể trong PHP, vì vậy tôi rất mong đợi được thấy enums xuất hiện trong PHP 8. 1. Để cung cấp cho bạn bản xem trước nhanh về giao diện của chúng, đây là một mẫu mã

enum Status {
  case Pending;
  case Active;
  case Archived;
}

Và đây là cách chúng sẽ được sử dụng

class Post
{
    public function __construct(
        private Status $status = Status::Pending;
    ) {}

    public function setStatus(Status $status): void
    {
        // …
    }
}

$post->setStatus(Status::Active);

Bạn có thể tìm thấy một phân tích chuyên sâu về cách sử dụng enums trong bài viết này


# Sợi RFC

Sợi — còn gọi là "luồng xanh" — là một cơ chế cấp thấp để quản lý tính song song. Bạn có thể sẽ không sử dụng chúng trực tiếp trong các ứng dụng của mình, nhưng các framework như Amphp và ReactPHP sẽ sử dụng chúng rộng rãi

Đây là một ví dụ đơn giản về việc sử dụng sợi

$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');

Nếu bạn muốn đọc thêm về sợi, những gì chúng có thể và không thể làm, bạn có thể đọc bài đăng này

Xem video mới nhất của tôi

Phiên bản PHP nào hiện tại?

PHP trong 1 phút

# Cải thiện hiệu suất PR

Dmitry Stogov đã thêm một số cải tiến cho opcache, ông gọi nó là "bộ đệm kế thừa". Tính năng này cho phép các liên kết giữa các lớp được lưu vào bộ đệm, giống như các lớp được liên kết có thể được tải trước kể từ PHP 7. 4

Dmitry báo cáo hiệu suất tăng từ 5% đến 8% nhờ thay đổi này, một chi tiết nhỏ thú vị cần chú ý trong PHP 8. 1


# Giải nén mảng bằng các khóa chuỗi RFC

Giải nén mảng đã được cho phép trong PHP 7. 4, nhưng nó chỉ hoạt động với các phím số. Lý do khóa chuỗi không được hỗ trợ trước đây là do không có bất kỳ sự đồng thuận nào về cách hợp nhất các mảng trùng lặp. RFC giải quyết vấn đề này một cách rõ ràng bằng cách tuân theo ngữ nghĩa của

$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');
2

$array1 = ["a" => 1];

$array2 = ["b" => 2];

$array = ["a" => 0, ...$array1, ...$array2];

var_dump($array); // ["a" => 1, "b" => 2]

# $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('after suspending'); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume('after resuming');3 trong bộ khởi tạo RFC

RFC này cho phép bạn sử dụng từ khóa

$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');
3 trong các định nghĩa hàm làm tham số mặc định, cũng như trong các đối số thuộc tính và các vị trí khác

php -v

2

Bạn có thể đọc tất cả về tính năng này trong bài đăng chuyên dụng này


# Thuộc tính chỉ đọc RFC

Thuộc tính lớp có thể được đánh dấu là chỉ đọc, nghĩa là chúng chỉ có thể được viết một lần

php -v

3

Cố gắng thay đổi thuộc tính chỉ đọc sau khi nó đã được khởi tạo sẽ dẫn đến lỗi

php -v

4

Nếu bạn muốn tìm hiểu sâu hơn về các thuộc tính chỉ đọc, bạn có thể đọc bài đăng tiếp theo của tôi


# Cú pháp có thể gọi hạng nhất RFC

Bây giờ, bạn có thể đóng từ một hàm có thể gọi được bằng cách gọi hàm có thể gọi đó và chuyển nó thành đối số

$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');
5

php -v

6

# Các loại giao lộ thuần túy RFC

Bạn đã biết về các kiểu union trong PHP 8. 0 và các loại giao lộ là một tính năng tương tự. Trong trường hợp các loại liên kết yêu cầu đầu vào là một trong các loại đã cho, các loại giao nhau yêu cầu đầu vào phải là tất cả các loại đã chỉ định. Các loại giao lộ đặc biệt hữu ích khi bạn đang làm việc với nhiều giao diện

php -v

7

Nếu bạn thích phong cách lập trình này, bạn cần tạo một giao diện mới

$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');
6 và triển khai nó trong
$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');
7, các kiểu giao nhau sẽ loại bỏ chi phí đó


# Loại $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('after suspending'); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume('after resuming');8 mới RFC

Loại

$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');
8 có thể được sử dụng để chỉ ra rằng một chức năng sẽ thực sự dừng dòng chương trình. Điều này có thể được thực hiện bằng cách đưa ra một ngoại lệ, gọi
$array1 = ["a" => 1];

$array2 = ["b" => 2];

$array = ["a" => 0, ...$array1, ...$array2];

var_dump($array); // ["a" => 1, "b" => 2]
0 hoặc các chức năng tương tự khác

PHP 5.6.35 (cli) (built: Mar 29 2018 14:27:15)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

3

$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');
8 khác với
$array1 = ["a" => 1];

$array2 = ["b" => 2];

$array = ["a" => 0, ...$array1, ...$array2];

var_dump($array); // ["a" => 1, "b" => 2]
2 ở chỗ
$array1 = ["a" => 1];

$array2 = ["b" => 2];

$array = ["a" => 0, ...$array1, ...$array2];

var_dump($array); // ["a" => 1, "b" => 2]
2 vẫn cho phép chương trình tiếp tục. Đây có vẻ như là một tính năng mới lạ nhưng nó thực sự là một tính năng khá hữu ích cho các máy phân tích tĩnh


# Hàm $array1 = ["a" => 1]; $array2 = ["b" => 2]; $array = ["a" => 0, ...$array1, ...$array2]; var_dump($array); // ["a" => 1, "b" => 2]4 mới RFC

Bạn có thể đã phải đối phó với điều này một lần trong một thời gian. xác định xem các khóa của mảng có theo thứ tự số hay không, bắt đầu từ chỉ mục 0. Giống như

$array1 = ["a" => 1];

$array2 = ["b" => 2];

$array = ["a" => 0, ...$array1, ...$array2];

var_dump($array); // ["a" => 1, "b" => 2]
5 quyết định xem một mảng nên được mã hóa dưới dạng mảng hay đối tượng

PHP8. 1 thêm một hàm tích hợp để xác định xem một mảng có phải là một danh sách với các ngữ nghĩa đó hay không

class Post
{
    public function __construct(
        private Status $status = Status::Pending;
    ) {}

    public function setStatus(Status $status): void
    {
        // …
    }
}

$post->setStatus(Status::Active);
0

Bạn có muốn cập nhật về PHP 8. 1 phát triển?

Đăng ký email


# Hằng lớp cuối cùng RFC

Hằng số lớp trong PHP có thể bị ghi đè trong quá trình kế thừa

class Post
{
    public function __construct(
        private Status $status = Status::Pending;
    ) {}

    public function setStatus(Status $status): void
    {
        // …
    }
}

$post->setStatus(Status::Active);
1

Kể từ PHP 8. 1, bạn có thể đánh dấu các hằng số như vậy là

$array1 = ["a" => 1];

$array2 = ["b" => 2];

$array = ["a" => 0, ...$array1, ...$array2];

var_dump($array); // ["a" => 1, "b" => 2]
6 để ngăn chặn điều này

class Post
{
    public function __construct(
        private Status $status = Status::Pending;
    ) {}

    public function setStatus(Status $status): void
    {
        // …
    }
}

$post->setStatus(Status::Active);
2

# Hàm $array1 = ["a" => 1]; $array2 = ["b" => 2]; $array = ["a" => 0, ...$array1, ...$array2]; var_dump($array); // ["a" => 1, "b" => 2]7 mới RFC

PHP8. 1 thêm các hàm

$array1 = ["a" => 1];

$array2 = ["b" => 2];

$array = ["a" => 0, ...$array1, ...$array2];

var_dump($array); // ["a" => 1, "b" => 2]
7 và
$array1 = ["a" => 1];

$array2 = ["b" => 2];

$array = ["a" => 0, ...$array1, ...$array2];

var_dump($array); // ["a" => 1, "b" => 2]
9 để bắt buộc đồng bộ hóa các thay đổi của tệp vào đĩa và đảm bảo bộ đệm ghi của hệ điều hành đã được xóa trước khi quay lại

class Post
{
    public function __construct(
        private Status $status = Status::Pending;
    ) {}

    public function setStatus(Status $status): void
    {
        // …
    }
}

$post->setStatus(Status::Active);
3

Vì đồng bộ hóa đĩa là hoạt động của hệ thống tệp nên hàm

$array1 = ["a" => 1];

$array2 = ["b" => 2];

$array = ["a" => 0, ...$array1, ...$array2];

var_dump($array); // ["a" => 1, "b" => 2]
7 sẽ chỉ hoạt động trên các luồng tệp đơn giản. Cố gắng đồng bộ hóa các luồng không phải tệp sẽ phát ra cảnh báo


# Ký hiệu số nguyên bát phân rõ ràng RFC

Bây giờ bạn có thể sử dụng

php -v

21 và
php -v

22 để biểu thị các số bát phân. Ký hiệu trước đó bằng cách đặt trước một số với
php -v

23 vẫn hoạt động tốt

class Post
{
    public function __construct(
        private Status $status = Status::Pending;
    ) {}

    public function setStatus(Status $status): void
    {
        // …
    }
}

$post->setStatus(Status::Active);
4

# Thay đổi đột phá

Trong khi PHP 8. 1 là một phiên bản nhỏ, sẽ có một số thay đổi về mặt kỹ thuật có thể là một thay đổi đột phá và cả việc không dùng nữa. Hãy thảo luận từng cái một


# Các kiểu trả về của phương thức bên trong RFC

Rất có thể bạn sẽ gặp phải thông báo không dùng nữa này khi nâng cấp lên PHP 8. 1

class Post
{
    public function __construct(
        private Status $status = Status::Pending;
    ) {}

    public function setStatus(Status $status): void
    {
        // …
    }
}

$post->setStatus(Status::Active);
5

Bạn có thể nhận thấy lỗi này bật lên khi sử dụng

php -v

24,
php -v

25 và một số gói mã nguồn mở phổ biến khác. Điều đã xảy ra là các hàm bên trong đang bắt đầu sử dụng các kiểu trả về thích hợp. Nếu bạn đang mở rộng một lớp từ thư viện tiêu chuẩn (chẳng hạn như
php -v

26), thì bạn cũng cần thêm các kiểu trả về đó

Cách khắc phục rất đơn giản. cập nhật mã nhà cung cấp của bạn nếu xảy ra lỗi trong gói của bên thứ ba (hầu hết các lỗi đó đã được sửa với các bản phát hành mới nhất của họ). Nếu xảy ra lỗi trong mã của bạn, bạn có thể thêm thuộc tính

php -v

27, khắc phục lỗi cho đến PHP 9. 0. Đây là một ví dụ về một lớp mở rộng
php -v

28

class Post
{
    public function __construct(
        private Status $status = Status::Pending;
    ) {}

    public function setStatus(Status $status): void
    {
        // …
    }
}

$post->setStatus(Status::Active);
6

Hoặc bạn chỉ cần thêm kiểu trả về

class Post
{
    public function __construct(
        private Status $status = Status::Pending;
    ) {}

    public function setStatus(Status $status): void
    {
        // …
    }
}

$post->setStatus(Status::Active);
7

# Hạn chế sử dụng php -v 29 RFC

Một thay đổi nhỏ đối với cách sử dụng

php -v

29 sẽ có tác động đáng kể đến hiệu suất của tất cả các hoạt động mảng. Nikita làm tốt công việc giải thích vấn đề và giải pháp trong RFC. Thay đổi này có nghĩa là một số trường hợp biên không thể thực hiện được nữa với
php -v

29. "Những gì không còn được hỗ trợ sẽ được ghi vào toàn bộ $GLOBALS. Tất cả những điều sau đây sẽ tạo ra lỗi thời gian biên dịch"

class Post
{
    public function __construct(
        private Status $status = Status::Pending;
    ) {}

    public function setStatus(Status $status): void
    {
        // …
    }
}

$post->setStatus(Status::Active);
8

Ngoài ra, việc chuyển

php -v

29 theo tham chiếu sẽ tạo ra lỗi thời gian chạy

class Post
{
    public function __construct(
        private Status $status = Status::Pending;
    ) {}

    public function setStatus(Status $status): void
    {
        // …
    }
}

$post->setStatus(Status::Active);
9

Nikita đã phân tích 2000 gói hàng đầu trên Packagist và chỉ tìm thấy 23 trường hợp sẽ bị ảnh hưởng bởi thay đổi này. Chúng ta có thể kết luận rằng tác động của việc này — sự thay đổi về mặt kỹ thuật — sẽ thấp, đó là lý do tại sao nội bộ quyết định thêm nó vào PHP 8. 1. Hãy nhớ rằng hầu hết chúng ta sẽ giành chiến thắng nhờ sự thay đổi này, do tác động hiệu suất tích cực mà nó có ở mọi nơi trong mã của chúng ta


# Tài nguyên để di chuyển đối tượng

Những thay đổi này là một phần của tầm nhìn dài hạn nhằm chuyển đổi tất cả các tài nguyên thành các đối tượng chuyên dụng. Bạn có thể đọc thêm về nó ở đây

Fileinfo chức năng với các đối tượng

php -v

33

Các chức năng như

php -v

34 và
php -v

35 được sử dụng để chấp nhận và trả lại tài nguyên. Kể từ PHP 8. 1, chúng làm việc với các đối tượng
php -v

33

Các chức năng IMAP với các đối tượng

php -v

37

Giống như thay đổi fileinfo, các chức năng IMAP như

php -v

38 và
php -v

39 không còn hoạt động với các tài nguyên


# Ngừng sử dụng các đối số null cho các đối số không nullable của các hàm bên trong RFC

Sự thay đổi này đơn giản. các chức năng bên trong hiện chấp nhận

php -v

40 cho các đối số không thể vô hiệu, RFC này không dùng hành vi đó. Ví dụ, điều này hiện có thể

$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');
0

Trong PHP8. 1, các loại lỗi này sẽ đưa ra cảnh báo không dùng nữa, trong PHP 9, chúng sẽ được chuyển thành lỗi loại


# Tự động hóa trên php -v 41 RFC

Từ RFC

PHP vốn cho phép tự động hóa (tự động tạo mảng từ các giá trị falsey). Tính năng này rất hữu ích và được sử dụng trong rất nhiều dự án PHP, đặc biệt nếu biến không xác định. Tuy nhiên, có một chút kỳ lạ là cho phép tạo mảng từ giá trị false và null

Bạn có thể đọc chi tiết trên trang RFC. Tóm lại, hành vi này không được chấp nhận

$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');
1

# Những thay đổi nhỏ khác

Với mỗi bản phát hành, có một loạt các thay đổi rất nhỏ đối với ngôn ngữ. Tất cả chúng đều được liệt kê trong hướng dẫn NÂNG CẤP trên GitHub và RFC không dùng nữa, hãy đảm bảo kiểm tra nếu bạn muốn biết từng chi tiết nhỏ

Dưới đây là tóm tắt những thay đổi quan trọng nhất

  • php -v

    42 không còn tác dụng
  • php -v

    43 không còn tác dụng
  • PDO. ATTR_STRINGIFY_FETCHESnow cũng hoạt động với booleans
  • Số nguyên và số float trong tập kết quả PDO MySQL và Sqlite sẽ được trả về bằng cách sử dụng các kiểu PHP gốc thay vì chuỗi khi sử dụng các câu lệnh đã chuẩn bị được mô phỏng
  • Các chức năng như
    php -v

    44 và
    php -v

    45 hiện cũng thoát khỏi
    php -v

    46 theo mặc định thành
    php -v

    47;
  • php -v

    48,
    php -v

    49 và
    php -v

    60 có thêm một đối số được gọi là
    php -v

    61, nó có giá trị mặc định là
    php -v

    62 nên nó sẽ không ảnh hưởng đến mã của bạn
  • Hỗ trợ mới cho
    php -v

    63 và
    php -v

    64

Xem video mới nhất của tôi

Phiên bản PHP nào hiện tại?

PHP trong 1 phút

Tạm thời là vậy, hãy nhớ rằng tôi sẽ thường xuyên cập nhật bài đăng này trong năm, vì vậy hãy đảm bảo đăng ký nếu bạn muốn được cập nhật. Bạn có hào hứng với PHP 8 không. 1?

Nhận thấy một tpyo? . Nếu bạn muốn cập nhật những gì đang diễn ra trên blog này, bạn có thể theo dõi tôi trên Twitter hoặc đăng ký nhận bản tin của tôi. Đăng ký email

Phiên bản mới nhất của PHP 2022 là gì?

W3Techs báo cáo rằng, kể từ tháng 10 năm 2022, "PHP được sử dụng bởi 74. 4% trong số tất cả các trang web có ngôn ngữ lập trình phía máy chủ mà chúng tôi biết. " PHP phiên bản 7. 4 là phiên bản được sử dụng nhiều nhất.

Là PHP 7. 4 ổn định?

Theo WordPress Codex, PHP 7. 4 là “ bản phát hành ổn định được đề xuất cho hầu hết người dùng . ” Tuy nhiên, như với bất kỳ phiên bản mới nào của một chương trình phần mềm, luôn có những vấn đề tiềm ẩn có thể phát sinh.

Là PHP 7. 4 cuối đời?

PHP 7. 4 sắp hết hạn sử dụng vì phiên bản PHP sẽ ngừng nhận bất kỳ bản cập nhật bảo mật nào kể từ ngày 28 tháng 11 năm 2022 .

Khi nào là PHP 7. 4 phát hành?

Phóng thích
Phát hành
Hỗ trợ bảo mật
8. 0
2 năm trước (24 Thg 11 2020)
Kết thúc sau 11 tháng (26/11/2023)
7. 4
3 năm trước (26 Thg 11 2019)
Đã kết thúc 2 tuần 4 ngày trước (28 Thg 11 2022)
7. 3
4 năm trước (04 Thg 12 2018)
Đã kết thúc 1 năm trước (06 Thg 12 2021)
7. 2
5 năm trước (28 Thg 11 2017)
Đã kết thúc 2 năm trước (30 Thg 11 2020)
PHP. cuối cuộc đời. dateendoflife. ngày › phpnull