Góc chia sẻ

php-src: mã nguồn chính thức của trình thông dịch PHP

php-src là kho mã nguồn chính thức của trình thông dịch PHP, viết bằng C. Bài viết giới thiệu cách cài đặt, tự build, chạy kiểm thử và đóng góp cho dự án.

Cập nhật lúc

php-src: mã nguồn chính thức của trình thông dịch PHP

php-src là gì

Nếu bạn từng viết web bằng PHP, có lẽ bạn chưa bao giờ nghĩ đến việc mở mã nguồn của chính ngôn ngữ này. php/php-src là kho mã nguồn chính thức của trình thông dịch PHP, được viết chủ yếu bằng C và đang có hơn 41.000 sao trên GitHub.

Theo README, PHP là một ngôn ngữ kịch bản đa dụng, phổ biến và đặc biệt phù hợp cho phát triển web. Dự án tự mô tả PHP là nhanh, linh hoạt và thực dụng, có mặt từ blog cá nhân cho đến những website lớn nhất thế giới.

Kho mã này dành cho nhiều đối tượng: lập trình viên muốn tự build PHP, người viết extension, người muốn tìm hiểu cách một ngôn ngữ lập trình vận hành bên trong, và cả những ai muốn đóng góp sửa lỗi hoặc đề xuất tính năng mới.

Những điểm đáng chú ý

  • Mã nguồn mở theo giấy phép BSD 3-Clause: PHP được phân phối theo Modified BSD License (SPDX: BSD-3-Clause).
  • Bản dựng sẵn cho nhiều nền tảng: với Windows, bạn có thể tải tại windows.php.net, giải nén là dùng được ngay các file *.exe.
  • Bộ kiểm thử đầy đủ: PHP đi kèm một bộ test lớn, chạy song song mặc định với tối đa 10 bộ xử lý logic được phát hiện.
  • Hệ thống extension: PHP có sẵn nhiều extension thiết yếu, và bạn có thể cài thêm qua PIE (PHP Installer for Extensions).
  • Quy trình phát triển minh bạch: tính năng mới cần qua RFC và được các nhà phát triển bỏ phiếu chấp nhận.

Khi nào bạn cần đến php-src

Phần lớn người dùng chỉ cần bản PHP dựng sẵn. Tuy vậy, kho mã nguồn này hữu ích trong một số tình huống:

  • Bạn muốn build PHP với tùy chọn riêng, ví dụ bản debug để phát triển.
  • Bạn viết hoặc gỡ lỗi extension và cần hiểu mã nguồn bên trong.
  • Bạn gặp một lỗi của PHP và muốn tự sửa rồi gửi pull request.
  • Bạn muốn theo dõi sự thay đổi của ngôn ngữ, phiên bản mới nhất hiện tại là php-8.5.12.

Bắt đầu nhanh với bản dựng sẵn

Cách nhanh nhất để dùng PHP là cài gói hoặc binary dựng sẵn:

  1. Trên Windows, truy cập windows.php.net để tải bản PHP.
  2. Giải nén file tải về.
  3. Các file *.exe trong thư mục đã sẵn sàng sử dụng.

Với các hệ điều hành khác, bạn xem chương cài đặt tại php.net/install.

Tự build PHP từ mã nguồn

Nếu dùng Windows, README hướng dẫn bạn xem tài liệu Build your own PHP on Windows trên wiki của PHP. Dưới đây là các bước cho Linux và macOS.

Để build bản tối thiểu từ Git, bạn cần autoconf, bison và re2c. Bản build mặc định cần thêm libxml2 và libsqlite3.

  1. Cài các gói phụ thuộc. Trên Ubuntu:
    sudo apt install -y pkg-config build-essential autoconf bison re2c libxml2-dev libsqlite3-dev
    Trên Fedora:
    sudo dnf install re2c bison autoconf make ccache libxml2-devel sqlite-devel
    Trên macOS với Homebrew:
    brew install autoconf bison re2c libiconv libxml2 sqlite
    Hoặc với MacPorts:
    sudo port install autoconf bison re2c libiconv libxml2 sqlite3
  2. Tạo script configure:
    ./buildconf
  3. Cấu hình bản build. Tùy chọn --enable-debug được khuyên dùng khi phát triển, xem đầy đủ bằng ./configure --help:
    # For development
    ./configure --enable-debug
    # For production
    ./configure
  4. Build PHP. Dùng tham số -j để tăng tốc, số job thường nên bằng số nhân CPU (xem bằng lệnh nproc):
    make -j4
  5. Chạy bộ kiểm thử sau khi build thành công:
    make test
  6. Cài đặt PHP vừa build. Tùy quyền và prefix, lệnh này có thể cần quyền superuser:
    make install

Mẹo khi chạy kiểm thử

Bạn có thể giới hạn số tiến trình chạy song song bằng biến TEST_PHP_ARGS:

make TEST_PHP_ARGS=-j4 test

Dùng -j1 nếu muốn chạy tuần tự. Để chỉ kiểm thử một thư mục cụ thể, dùng biến TESTS:

make TESTS=tests/lang/ test

Thông tin chi tiết hơn về kiểm thử và đảm bảo chất lượng có tại qa.php.net.

Extension cho PHP

Extension bổ sung chức năng cho PHP. Ngoài các extension đi kèm, bạn có thể tìm thêm trong danh sách PIE Extensions trên Packagist và cài bằng PIE. PECL vẫn tồn tại nhưng đã được đánh dấu là deprecated.

Đóng góp cho dự án

PHP chào đón đóng góp qua cách quen thuộc: fork kho mã và gửi pull request. Một vài quy tắc bạn nên nắm:

  • Thảo luận diễn ra trên GitHub, đôi khi được chuyển sang mailing list [email protected].
  • Tính năng mới cần có RFC và phải được chấp nhận qua bỏ phiếu.
  • Sửa lỗi không cần RFC. Nếu lỗi có issue trên GitHub, hãy ghi GH-NNNNNN trong commit message, còn lỗi từ bugs.php.net cũ thì dùng #NNNNNN.

Ví dụ commit message theo đúng quy ước:

Fix GH-7815: php_uname doesn't recognise latest Windows versions

Kho mã cũng có sẵn các tài liệu như CONTRIBUTING.md, CODING_STANDARDS.md, tài liệu nội bộ và quy trình phát hành để bạn tham khảo trước khi đóng góp.

Một vài lưu ý

  • Giấy phép: BSD 3-Clause.
  • Ngôn ngữ: C.
  • Tài liệu: hướng dẫn sử dụng PHP có tại php.net/docs.
  • Độ trưởng thành: dự án có quy trình kiểm thử tự động, được fuzzing qua OSS-Fuzz và vẫn được cập nhật thường xuyên.

Kết luận

php-src là nơi PHP được phát triển mỗi ngày. Dù bạn chỉ muốn build một bản PHP debug, viết extension hay gửi bản sửa lỗi đầu tiên cho một ngôn ngữ phổ biến, đây là điểm khởi đầu đáng giá. Hãy ghé thăm github.com/php/php-src để khám phá mã nguồn và bắt đầu thử nghiệm.