Cách cài đặt PHP trên Ubuntu: Hướng dẫn toàn diện từ người mới bắt đầu đến nâng cao (Ubuntu 22.04 LTS)

.

目次

1. Giới thiệu

Tại sao sử dụng PHP trên Ubuntu

PHP là một ngôn ngữ kịch bản phía máy chủ được sử dụng rộng rãi trong nhiều ứng dụng web, bao gồm WordPress. Nó đã được sử dụng mạnh mẽ trong phát triển web trong nhiều năm, và một số lượng lớn các nền tảng CMS và framework được xây dựng trên PHP.

Ubuntu là một bản phân phối Linux rất ổn định, được các nhà phát triển trên toàn thế giới sử dụng và đặc biệt phù hợp cho môi trường máy chủ. Sự kết hợp giữa Ubuntu và PHP được áp dụng rộng rãi, từ các thiết lập phát triển cá nhân đến các hệ thống sản xuất cấp doanh nghiệp.

Đối tượng độc giả và mục đích của bài viết này

Bài viết này hướng tới một dải người dùng rộng, từ người mới bắt đầu muốn cài đặt PHP trên Ubuntu nhưng chưa biết bắt đầu từ đâu, đến người dùng trung cấp cần cài đặt các phiên bản PHP cụ thể. Các quy trình được giải thích càng rõ ràng càng tốt.

Các hướng dẫn dựa trên Ubuntu 22.04 LTS, nhưng các bước cơ bản tương tự cũng áp dụng cho các phiên bản khác.

Những gì bạn sẽ học

Khi đọc bài viết này, bạn sẽ có thể hiểu và thực hành các nội dung sau:

  • Các phương pháp cơ bản để cài đặt PHP trên Ubuntu
  • Cách cài đặt và chuyển đổi giữa nhiều phiên bản PHP
  • Cách kiểm tra hoạt động của PHP và khắc phục sự cố
  • Cấu hình tích hợp với Apache và Nginx
  • Cách cài đặt các mô-đun PHP thường dùng

2. Yêu cầu và chuẩn bị

Cách kiểm tra phiên bản Ubuntu của bạn

Đầu tiên, kiểm tra phiên bản Ubuntu bạn đang sử dụng. Các phương pháp cài đặt PHP và các mô-đun hỗ trợ có thể hơi khác nhau tùy vào phiên bản Ubuntu.

Bạn có thể kiểm tra phiên bản Ubuntu bằng cách chạy lệnh sau:

lsb_release -a

Hoặc bạn có thể sử dụng lệnh này:

cat /etc/os-release

Bài viết này giải thích các quy trình dựa trên Ubuntu 22.04 LTS, nhưng các bước tương tự thường áp dụng cho Ubuntu 20.04 và 23.10.

Giữ các gói hệ thống luôn cập nhật

Trước khi cài đặt PHP, việc cập nhật tất cả các gói hệ thống là rất quan trọng. Điều này giúp ngăn ngừa các vấn đề phụ thuộc và xung đột.

sudo apt update
sudo apt upgrade -y

Lệnh này cập nhật chỉ mục gói APT và đảm bảo rằng tất cả các gói có thể được cài đặt ở phiên bản ổn định mới nhất.

Cài đặt các tiện ích cần thiết

Một số phiên bản PHP yêu cầu công cụ bổ sung để quản lý các kho lưu trữ. Gói software-properties-common cần thiết để thêm các kho như PPA.

Nếu chưa được cài đặt, hãy cài đặt nó bằng lệnh sau:

sudo apt install -y software-properties-common

Gói này cần cho các lệnh như add-apt-repository, thường được sử dụng khi cài đặt các phiên bản PHP cụ thể qua PPA.

Sử dụng quyền root hoặc sudo

Hầu hết các thao tác được giới thiệu trong bài viết này yêu cầu thay đổi ở mức hệ thống. Hãy chắc chắn sử dụng sudo khi chạy các lệnh.

3. Cách cài đặt PHP

Có hai cách chính để cài đặt PHP trên Ubuntu. Một là cài đặt từ các kho lưu trữ mặc định, và cách còn lại là cài đặt một phiên bản cụ thể bằng PPA (Personal Package Archive). Mỗi phương pháp sẽ được giải thích chi tiết dưới đây.

Cài đặt PHP từ kho mặc định

Ubuntu cung cấp một phiên bản PHP ổn định trong các kho mặc định của nó. Nếu bạn không cần một phiên bản cụ thể, đây là cách dễ nhất.

sudo apt install -y php

Sau khi cài đặt, xác minh rằng PHP đã được cài đặt đúng cách:

php -v

Ví dụ đầu ra:

PHP 8.1.2 (cli) (built: ...)

Trên Ubuntu 22.04, PHP 8.1 được cài đặt mặc định.

Cài đặt một phiên bản PHP cụ thể bằng PPA

Nếu bạn muốn sử dụng phiên bản PHP mới nhất hoặc quản lý nhiều phiên bản, bạn có thể thêm ondrej/php PPA.

Bước 1: Thêm kho PPA

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

PPA này được cộng đồng Ubuntu sử dụng rộng rãi và cung cấp các bản dựng ổn định cho nhiều phiên bản PHP.

Bước 2: Cài đặt phiên bản PHP mong muốn

Ví dụ, để cài đặt PHP 8.2:

sudo apt install -y php8.2

.Bạn cũng có thể cài đặt các phiên bản khác như PHP 7.4 hoặc 8.0.

Bước 3: Xác Minh Phiên Bản Đã Cài Đặt

php -v

4. Xác Minh Hoạt Động Của PHP

Sau khi cài đặt PHP, hãy xác minh rằng nó hoạt động đúng. Bạn có thể kiểm tra qua dòng lệnh và thông qua máy chủ web như Apache hoặc Nginx.

Xác Minh Qua Dòng Lệnh (CLI)

Đầu tiên, kiểm tra phiên bản PHP từ terminal:

php -v

Kết Quả Ví Dụ:

PHP 8.2.10 (cli) (built: Aug 23 2023 08:12:10) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies

Xác Minh Qua Máy Chủ Web (Apache)

Nếu Apache đã được cài đặt, tạo một trang thử nghiệm bằng hàm phpinfo().

1. Tạo Tập Tin Thử Nghiệm

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

2. Truy Cập Qua Trình Duyệt

http://localhost/info.php

3. Xác Nhận Kết Quả

Nếu thông tin chi tiết của PHP được hiển thị, PHP đang hoạt động đúng với Apache.

🔍 Lưu ý: Kết quả phpinfo() chứa thông tin nhạy cảm. Hãy xóa tập tin này sau khi xác minh.

sudo rm /var/www/html/info.php

Xác Minh Với Nginx + PHP‑FPM

Khi sử dụng Nginx, PHP được xử lý qua php-fpm. Để xác minh tích hợp đúng, hãy đảm bảo các tệp .php được cấu hình chính xác trong file cấu hình Nginx, sau đó tạo một tệp info.php giống như khi dùng Apache.

Nếu cấu hình không đúng, bạn có thể gặp lỗi 500 hoặc tệp sẽ được tải về thay vì thực thi. Trong những trường hợp này, hãy kiểm tra lại các thiết lập như fastcgi_passinclude fastcgi-php.conf; trong file cấu hình Nginx.

5. Cài Đặt Các Mô-đun PHP Thông Dụng

Chỉ cài đặt PHP không cung cấp mọi chức năng. Nhiều tính năng được cung cấp dưới dạng các mô-đun (extension) riêng biệt và cần được cài đặt khi cần. Phần này giới thiệu các mô-đun PHP thường dùng trong phát triển và vận hành thực tế.

Mô-đun PHP Là Gì?

Mô-đun PHP (còn gọi là extension) bổ sung các khả năng cụ thể như kết nối cơ sở dữ liệu, xử lý chuỗi đa byte, xử lý ảnh và phân tích XML.

Các mô-đun được cung cấp dưới dạng gói APT và có thể cài đặt như sau:

sudo apt install php-module-name

Nếu bạn muốn chỉ định phiên bản, sử dụng định dạng như php8.2-mbstring.

Các Mô-đun PHP Chính và Công Dụng Của Chúng

php-mbstring (Hỗ Trợ Chuỗi Đa Byte)

Mô-đun này là thiết yếu để xử lý các chuỗi ký tự đa byte như tiếng Nhật. Nó gần như bắt buộc đối với các website và xử lý email tiếng Nhật.

sudo apt install php-mbstring

php-mysql (Kết Nối MySQL / MariaDB)

Mô-đun này cần thiết khi kết nối tới các cơ sở dữ liệu như MySQL hoặc MariaDB. Nó là yếu tố quan trọng cho các ứng dụng như WordPress.

sudo apt install php-mysql

php-gd (Xử Lý Ảnh)

Mô-đun này được dùng để tạo, chuyển đổi và thay đổi kích thước ảnh, thường được sử dụng cho thumbnail và các thao tác ảnh khác.

sudo apt install php-gd

php-xml (Xử Lý XML)

Mô-đun này cần thiết để làm việc với dữ liệu dựa trên XML như RSS feed và dịch vụ SOAP. Nó thường xuất hiện trong các nền tảng CMS và tích hợp API.

sudo apt install php-xml

php-curl (Giao Tiếp HTTP)

Mô-đun này cho phép thực hiện các yêu cầu HTTP từ máy chủ, ví dụ khi tích hợp với các API bên ngoài. Nó là yêu cầu bắt buộc của nhiều framework hiện đại.

sudo apt install php-curl

php-zip (Xử Lý Tập Tin Nén)

Mô-đun này cho phép tạo và giải nén các file ZIP và thường được dùng trong các tính năng tải lên tập tin.

sudo apt install php-zip

Kích Hoạt Mô-đun và Khởi Động Lại Dịch Vụ

Một số mô-đun cần được kích hoạt rõ ràng sau khi cài đặt. Sử dụng phpenmod để bật chúng.

sudo phpenmod module_name
sudo systemctl restart apache2

Các mô-đun đã bật sẽ có hiệu lực sau khi khởi động lại máy chủ web.

6. Quản Lý và Chuyển Đổi Phiên Bản PHP

.Ubuntu cho phép bạn cài đặt và sử dụng nhiều phiên bản PHP trên một máy chủ duy nhất. Điều này đặc biệt hữu ích trong môi trường phát triển hoặc các máy chủ lưu trữ nhiều ứng dụng web.

Phần này giải thích cách chuyển đổi phiên bản PHP cho CLI và cho Apache.

Chuyển đổi Phiên bản PHP trong CLI

Lệnh được sử dụng: update-alternatives

Bạn có thể dễ dàng chuyển phiên bản PHP được dùng trong dòng lệnh bằng update-alternatives.

Bước 1: Kiểm tra các Phiên bản PHP đã Cài đặt

ls /usr/bin/php*

Bước 2: Đăng ký các Phiên bản PHP (Chỉ một lần đầu tiên)

sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82

Bước 3: Chọn Phiên bản PHP

sudo update-alternatives --config php

Bạn sẽ thấy một menu lựa chọn tương tự như sau:

There are 2 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php8.2   82        auto mode
  1            /usr/bin/php7.4   74        manual mode
  2            /usr/bin/php8.2   82        manual mode

Press <enter> to keep the current choice[*], or type selection number:

Bước 4: Xác minh Phiên bản

php -v

Chuyển đổi Phiên bản PHP trong Apache

Khi sử dụng Apache, các phiên bản PHP được quản lý thông qua các mô-đun của Apache. Bạn có thể chuyển đổi phiên bản bằng cách bật và tắt các mô-đun.

1. Kiểm tra các Mô-đun có Sẵn

ls /etc/apache2/mods-available | grep php

2. Tắt Mô-đun Đang Hoạt động Hiện tại

sudo a2dismod php7.4

3. Bật Phiên bản Mong muốn

sudo a2enmod php8.2

4. Khởi động lại Apache

sudo systemctl restart apache2

7. Tích hợp PHP với Apache và Nginx

PHP thực sự mạnh mẽ khi được tích hợp với một máy chủ web. Trên Ubuntu, các máy chủ web được sử dụng phổ biến nhất là ApacheNginx.

Tích hợp Apache (mod_php)

Apache có thể xử lý các script PHP trực tiếp bằng mô-đun mod_php. Phương pháp này đơn giản và phù hợp cho các nền tảng CMS như WordPress.

Bước 1: Cài đặt Apache và mod_php

sudo apt install -y apache2 libapache2-mod-php

Bước 2: Khởi động lại Apache

sudo systemctl restart apache2

Bước 3: Kiểm tra việc Thực thi PHP

<?php
phpinfo();
?>
http://localhost/test.php

Tích hợp Nginx (PHP‑FPM)

Nginx không xử lý PHP trực tiếp. Thay vào đó, nó dựa vào PHP‑FPM (FastCGI Process Manager).

Bước 1: Cài đặt Nginx và PHP‑FPM

sudo apt install -y nginx php-fpm

Bước 2: Chỉnh sửa Cấu hình Nginx

sudo nano /etc/nginx/sites-available/default
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}

Bước 3: Khởi động lại Nginx

sudo systemctl restart nginx

8. Khắc phục sự cố

Mã nguồn PHP được hiển thị trong Trình duyệt

Nguyên nhân

Điều này xảy ra khi máy chủ web không xử lý đúng các tệp PHP.

Giải pháp

  • Apache:
    sudo apt install libapache2-mod-php
    sudo systemctl restart apache2
    
  • Nginx:
    sudo systemctl restart php8.2-fpm
    sudo systemctl restart nginx
    

Các hàm PHP không được định nghĩa

Nguyên nhân

Các mô-đun PHP cần thiết chưa được cài đặt hoặc chưa được bật.

Giải pháp

sudo apt install php-mbstring php-xml php-curl
sudo systemctl restart apache2
php -m

Lỗi PHP không được hiển thị

Giải pháp

sudo nano /etc/php/8.2/apache2/php.ini
display_errors = On
error_reporting = E_ALL
sudo systemctl restart apache2

Vị trí các tệp Log

Apache:

/var/log/apache2/error.log

Nginx:

/var/log/nginx/error.log

PHP‑FPM:

/var/log/php8.2-fpm.log

9. Tổng kết

answer.Bài viết này cung cấp hướng dẫn từng bước cách cài đặt PHP trên Ubuntu, từ cơ bản đến nâng cao.

Những điểm chính

  • Kiểm tra phiên bản Ubuntu và cập nhật các gói
  • Cài đặt PHP qua các kho mặc định hoặc PPA
  • Xác minh PHP qua CLI và máy chủ web
  • Mở rộng chức năng bằng các mô-đun
  • Quản lý đa phiên bản PHP một cách linh hoạt
  • Tích hợp đúng cách với Apache hoặc Nginx
  • Kiểm tra log khi khắc phục sự cố

Các bước tiếp theo

  • Cài đặt MySQL hoặc MariaDB
  • Thiết lập WordPress
  • Sử dụng các framework PHP như Laravel
  • Kích hoạt HTTPS với chứng chỉ SSL
  • Quản lý dịch vụ bằng systemd

Ubuntu và PHP cùng nhau tạo ra một môi trường phát triển mạnh mẽ và linh hoạt. Hãy sử dụng hướng dẫn này làm nền tảng và tiếp tục mở rộng kỹ năng của bạn.

10. Câu hỏi thường gặp (FAQ)

Câu hỏi 1. Làm thế nào để cài đặt phiên bản PHP mới nhất trên Ubuntu?

A. Sử dụng PPA ondrej/php và chỉ định phiên bản mong muốn.

Câu hỏi 2. Làm sao chuyển đổi phiên bản PHP trong CLI?

sudo update-alternatives --config php

Câu hỏi 3. Mã nguồn PHP được hiển thị trong Apache.

sudo apt install libapache2-mod-php
sudo systemctl restart apache2

Câu hỏi 4. php.ini nằm ở đâu?

  • Apache: /etc/php/8.2/apache2/php.ini
  • CLI: /etc/php/8.2/cli/php.ini

Câu hỏi 5. Làm sao bật các mô-đun PHP?

sudo phpenmod mbstring
sudo systemctl restart apache2

Câu hỏi 6. PHP không hoạt động với Nginx.

Đảm bảo rằng php-fpm đã được cài đặt và fastcgi_pass được cấu hình đúng.

Câu hỏi 7. Lỗi PHP không hiển thị.

display_errors = On
error_reporting = E_ALL