bookmark_borderCài đặt PHP 7.4

PHP vừa mới ra phiên bản 7.4 hôm 28/11/2019. (Xem changelog ở đây).

Nay rảnh nên quyết định cài lên VPS.

1. PHP Package

Trước tiên, để keep-up-to-date với các phiên bản PHP, mình sử dụng PPA của bạn Ondrej (https://launchpad.net/~ondrej/+archive/ubuntu/php):

add-apt-repository ppa:ondrej/php
apt update

Very easy. Lúc này, mình có thể cài đặt bất kỳ phiên bản PHP nào, từ các bản 7.0, 7.2, vv.. cho đến bản 7.4 mới ra lò.

2. Cài đặt PHP 7.4

Sau khi đã đảm bảo việc keep-up-to-date thì tiến hành cài đặt:

apt install php7.4-fpm

Các “thứ” sẽ được cài đặt bao gồm:

php7.4-cli 
php7.4-common 
php7.4-fpm 
php7.4-json 
php7.4-opcache 
php7.4-readline

Các thứ nên/cần được cài thêm:

apt install \ 
php7.4-bcmath \ 
php7.4-bz2 \ 
php7.4-curl \ 
php7.4-gd \ 
php7.4-intl \ 
php7.4-mbstring \ 
php7.4-mysql \ 
php7.4-xml \ 
php7.4-zip

3. Cấu hình PHP 7.4

Thay đổi một số thiết lập trong file php.ini:

# Open file to edit
vi /etc/php/7.4/fpm/php.ini

Vài thiết lập cần/nên được sửa đổi để phù hợp với nhu cầu:

max_execution_time = 300 
max_input_time = 600
memory_limit = 256M 
post_max_size = 100M 
cgi.fix_pathinfo = 0 
upload_max_filesize = 100M

Sau đó, khởi động lại service PHP 7.4 FPM:

service php7.4-fpm restart

4. Cấu hình NGINX chạy PHP 7.4

Tạo file cấu hình chạy PHP cho NGINX:

# Open file to edit
vi /etc/nginx/php.conf

Dưới đây là nội dung file cấu hình tham khảo:

location / { 
    try_files $uri $uri/ /index.php?$query_string; 
} 

location ~ [^/]\.php(/|$) { 
    fastcgi_split_path_info ^(.+?\.php)(/.*)$; 
    if (!-f $document_root$fastcgi_script_name) { 
        return 404; 
    } 
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_index index.php; 
    fastcgi_param HTTP_PROXY ""; 
    include fastcgi.conf; 
}

File này có thể được tái sử dụng nhiều lần khi thiết lập các website chạy trên NGINX. Ví dụ về thiết lập cho subdomain dev.linhntaim.com sử dụng mã nguồn WordPress có sử dụng thông tin cấu hình từ php.conf:

server { 
    listen 443 ssl http2; 
    listen [::]:443 ssl http2; 

    server_name dev.linhntaim.com; 

    include ssl.conf; 
    
    index index.php index.html; 
    
    ... 

    include php.conf; # PHP configuration
}

Sau khi đã tạo/chỉnh sửa các file cấu hình, thực hiện kiểm tra và khởi động lại service NGINX:

nginx -t 
service nginx restart

Hoàn tất.

5. Vài điều cần lưu ý sau khi cài đặt PHP 7.4

PHP 7.4 đã hỗ trợ và mặc định khi kết nối với CSDL MySQL 8.0 sẽ sử dụng tài khoản có password được mã hóa theo caching_sha2_password. Do vậy, khi tạo tài khoản trên CSDL MySQL 8.0 để kết nối từ mã nguồn PHP 7.4, cần tạo với câu lệnh sau:

-- A very clearly way to create an account with password hashed by caching_sha2_password
create user 'php7.4'@'localhost' identified with caching_sha2_password by 'password'; 

-- Or because MySQL 8.0 has caching_sha2_password as default method, we simply excute this 
create user 'php7.4'@'localhost' identified by 'password';

Đối với những tài khoản đã tạo với password được mã hóa theo mysql_native_password hoặc phương thức khác, để cập nhật password với phương thức mới, dùng câu lệnh sau:

alter user 'php7.4'@'localhost' identified with caching_sha2_password by 'password';

Khi cảm thấy ổn với phiên bản PHP 7.4 sau một thời gian sử dụng, tiến hành xóa bỏ các phiên bản cũ hơn nếu không cần dùng nữa:

apt remove \ 
php7.3-fpm \ 
php7.3-common \ 
php7.3-bcmath \ 
php7.3-bz2 \ 
php7.3-curl \ 
php7.3-gd \ 
php7.3-intl \ 
php7.3-mbstring \ 
php7.3-mysql \ 
php7.3-xml \ 
php7.3-zip 

apt autoremove --purge 

rm -r /etc/php/7.3