Site icon Cung cấp dịch vụ Cloud VPS, Server, Hosting Việt Nam & Thế giới

Hướng dẫn cập nhật PHP trên DirectAdmin để vá lỗ hổng bảo mật ngày 21/10/2026

update PHP Directadmin

Ngày 21/10/2026, PHP phát hành bản vá khẩn cho hai lỗ hổng thực thi mã từ xa, không cần đăng nhập. Mức CVSS v4.0 là 9.2. Máy DirectAdmin biên dịch PHP bằng CustomBuild nên không tự vá khi hệ điều hành chạy yum hay apt. Việc cần làm là nâng DirectAdmin lên bản có gói PHP mới, rồi rebuild PHP trên giao diện CustomBuild.

Bài viết ưu tiên giao diện Evolution: Admin, CustomBuild, tab Updates, Settings, Build PHP, PHP Version Selector cho từng domain. SSH chỉ cần khi compile lỗi hoặc khi skin Enhanced không còn CustomBuild.

Tóm tắt việc cần làm trên DirectAdmin

Cập nhật ngay các nhánh còn nhận bản vá chính thức: PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35. CustomBuild cũng đã đưa bản vá backport cho PHP 8.1, 8.0 và 7.4. PHP 7.3 trở xuống chưa có gói chính thức tại thời điểm phát hành.

Hai mã lỗ hổng: CVE-2026-109618 (lỗi khi hết bộ nhớ) và CVE-2026-109619 (trạng thái nội bộ còn sót giữa các request trên cùng worker). Nguy cơ cao nhất với Apache mod_php. PHP-FPM, php-cgi, LiteSpeed, OpenLiteSpeed trên DirectAdmin vẫn phải vá.

Không có cấu hình tạm nào thay thế được bản vá. Sửa php.ini chỉ giảm một số đường tấn công. Máy còn PHP 8.2 nên lên 8.3 hoặc 8.5 trước 31/12/2026, vì nhánh 8.2 hết hỗ trợ bảo mật vào ngày đó.

DirectAdmin tự cập nhật panel, nhưng PHP không tự rebuild trừ khi đã bật cron CustomBuild với mục updates. Phải vào CustomBuild và kích hoạt cập nhật PHP. Máy có nhiều nhánh thì rebuild đủ các nhánh đang bật trong Settings.

Trước khi bấm Build, chụp snapshot VPS tại nhà cung cấp cloud. Compile PHP trên DirectAdmin thường mất 10 đến 30 phút mỗi nhánh, tùy CPU và RAM.

Hai lỗ hổng cần hiểu trước khi rebuild

CVE-2026-109618 xảy ra khi request chạm memory_limit đúng lúc PHP đang khởi tạo dữ liệu nội bộ. Phần dọn request có thể coi dữ liệu dở dang là hợp lệ. Trên mod_php, tấn công đã được chứng minh trước khi mã website chạy, kể cả cấu hình mặc định. PHP-FPM xác nhận thực thi mã qua một số đường trong ứng dụng.

CVE-2026-109619 xảy ra khi fatal error để lại con trỏ trỏ vào bộ nhớ của request trước. Worker xử lý request sau dùng lại vùng nhớ đã giải phóng. Hệ quả là crash worker hoặc thực thi mã trên ứng dụng thật.

Cả hai lỗi nằm ở quản lý bộ nhớ và xử lý lỗi, hai lớp gần như mọi request HTTP đều đi qua. WordPress, Laravel, Magento, Roundcube, phpMyAdmin trên DirectAdmin đều phụ thuộc lớp này.

Bản vá theo nhánh PHP trên DirectAdmin

Đối chiếu số phiên bản sau khi rebuild trong phpinfo, không chỉ nhìn nhãn 8.4 hay 8.5 trên Domain Setup.

PHP 8.5: tối thiểu 8.5.12. Đây là nhánh đang được hỗ trợ đầy đủ lâu nhất trong các bản ổn định hiện có trên CustomBuild.

PHP 8.4: tối thiểu 8.4.27. Nhiều site WordPress trên DirectAdmin đang dùng nhánh này.

PHP 8.3: tối thiểu 8.3.36. Nhánh này đã chuyển sang giai đoạn chỉ vá bảo mật.

PHP 8.2: tối thiểu 8.2.35. Hết hỗ trợ bảo mật ngày 31/12/2026. Vá xong vẫn nên lên 8.3 hoặc 8.5.

PHP 8.1, 8.0, 7.4: dự án PHP không còn phát hành point release. DirectAdmin vá bằng patch nguồn khi rebuild. phpinfo của 7.4 vẫn có thể hiện 7.4.33. Dấu hiệu đã vá là CustomBuild không còn báo PHP 7.4 cần update, và file patch CVE đã có trong thư mục patches của CustomBuild sau lần build. Một file patch phủ cả hai CVE.

PHP 7.3, 7.2, 7.1, 7.0, 5.6: chưa có patch CustomBuild ở đợt phát hành đầu. Tắt site hoặc chuyển domain sang nhánh đã vá. Đừng để PHP 7.3 làm php1_release.

CloudLinux alt-php nằm ngoài CustomBuild. Selector CloudLinux không vá khi bạn bấm Build PHP trong DirectAdmin. Máy dùng alt-php phải cập nhật gói alt-php của CloudLinux riêng, rồi đối chiếu changelog CVE.

Chuẩn bị trên giao diện trước khi cập nhật

Đăng nhập DirectAdmin bằng tài khoản Admin. Giao diện CustomBuild nằm trong Evolution. Vào Server Manager, mở CustomBuild. Nếu menu trống, đổi skin sang Evolution trong Home hoặc Customize. Plugin CustomBuild cũ trên Enhanced không còn được hỗ trợ.

Trong CustomBuild, mở Settings. Ghi lại php1_release, php2_release đến php9_release và php1_mode. php1 là mặc định, phục vụ webapps như Roundcube. Ảnh chụp màn hình Settings để đối chiếu sau.

Vào từng User, Domain Setup, xem PHP Version Selector của domain quan trọng. Ghi domain nào đang gắn nhánh nào.

Sao lưu trên panel: User, Create Backup cho tài khoản quan trọng. Admin Backup nếu máy dùng lịch backup sẵn. Snapshot ổ đĩa tại trang quản lý VPS quan trọng hơn backup file, vì compile PHP có thể làm php-fpm hoặc Apache dừng giữa chừng.

Thông báo bảo trì ngắn nếu site bán hàng. Không bấm Build all. Chỉ cập nhật PHP, không biên dịch lại Nginx, MySQL, Dovecot cùng lúc.

Kiểm tra dung lượng ổ và RAM trên Admin, System Info. Máy dưới 2 GB RAM dễ fail compile. Nên có swap. Hệ điều hành đã hết hạn như CentOS 7 hay Debian 11 dễ thiếu thư viện khi tải dependency.

Cách cập nhật PHP trên giao diện DirectAdmin

Bước 1. Đăng nhập Admin, mở Server Manager, chọn CustomBuild.

Bước 2. Nâng DirectAdmin trước nếu panel chưa ở kênh current hoặc stable mới nhất. Mục cập nhật panel thường nằm ở Admin Settings hoặc System Updates. Bản DirectAdmin mới kéo theo versions.txt của CustomBuild, nơi ghi PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 và các patch 8.1, 8.0, 7.4. Nếu bỏ bước này, tab Updates sẽ không thấy PHP cần vá.

Bước 3. Trong CustomBuild, mở tab Updates. Đợi danh sách phiên bản đang cài và phiên bản mới tải xong. Tìm các dòng PHP. Máy bật bốn nhánh thì sẽ có bốn dòng.

Bước 4. Cập nhật từng PHP đang báo outdated, hoặc bấm cập nhật tất cả thành phần đang chờ nếu bạn chấp nhận rebuild tuần tự. Xác nhận hộp thoại. CustomBuild tải mã nguồn, áp patch, biên dịch. Theo dõi log trên cùng trang. Evolution cho phép rời trang rồi quay lại log đang chạy, đừng đóng phiên Admin, đừng reboot VPS.

Bước 5. Nếu Updates không hiện PHP dù đã nâng panel, mở Software trong CustomBuild, tìm Build PHP, bấm Build. Lệnh này biên dịch lại mọi nhánh đang bật trong Settings. Thời gian lâu hơn cập nhật từng gói, nhưng chắc chắn áp patch 7.4 và 8.1.

Bước 6. Khi log báo xong, không Uninstall PHP. Mở lại Updates. Các dòng PHP đã vá phải khớp latest. PHP 7.4 có thể cùng số 7.4.33 ở cả installed và latest. Khi đó không còn nút update là dấu hiệu đã đồng bộ patch.

Bước 7. Restart dịch vụ PHP từ Admin, Service Monitor. Khởi động lại php-fpm của từng nhánh, hoặc Apache nếu máy còn mod_php, hoặc LiteSpeed nếu webserver là LSWS. Evolution thường có nút Restart cạnh từng service.

Bước 8. Kiểm tra phpinfo. Cách sạch trên giao diện: File Manager của một domain, tạo file tạm trong public_html, nội dung gọi phpinfo, mở https://ten-mien/ten-file.php trên trình duyệt. Dòng PHP Version phải là 8.5.12, 8.4.27, 8.3.36 hoặc 8.2.35. Loaded Configuration File thường dạng /usr/local/php84/lib/php.ini. Xóa file ngay sau khi xem. Roundcube và phpMyAdmin dùng php1. Vào webmail, nếu php1 đã vá thì tool hệ thống cũng đi nhánh mới.

Bước 9. User Level, Domain Setup, PHP Version Selector. Số trên selector là nhánh major. Point release mới không đổi nhãn 8.4 thành 8.5. Chỉ đổi selector khi chủ đích rời 8.2 sang 8.3 hoặc 8.5. Save, tải lại trang chủ site.

Nếu Updates trống sau khi nâng panel, tải lại CustomBuild, đợi vài phút. Kho mã nguồn từng quá tải ngay sau ngày phát hành. Máy kênh rhel7 hoặc debian10 cần bản DirectAdmin legacy đã backport hệ thống patch. Nâng panel trên đúng kênh rồi mới Build PHP.

Gán PHP cho website trên Domain Setup

Vá xong nhánh hiện tại là đủ để đóng lỗ hổng. Nếu site còn 7.4 hoặc 8.1, nên chuyển sang 8.3+ sau khi kiểm tra plugin.

Admin hoặc User vào Domain Setup của domain. PHP Version Selector liệt kê đúng các nhánh đã bật trong CustomBuild Settings và đã Build. Chọn nhánh đã vá, Save.

php1_release nên là 8.4 hoặc 8.5 đã vá, vì webapps hệ thống chạy php1. Giữ 7.4 ở php2 hoặc php3 cho app cũ, không để 7.4 làm mặc định.

Cài thêm nhánh mới: CustomBuild, Settings, đặt php2_release hoặc php3_release thành 8.4 hoặc 8.5, php mode cùng kiểu với php1, thường là php-fpm. Save Settings. Quay Software, Build PHP. Đợi compile xong. Domain Setup sẽ hiện thêm lựa chọn.

Subdomain có selector riêng: User, Sub-Domains Setup, Document Root Override, PHP Version Selector. Subdomain không tự theo domain gốc nếu đã gán khác.

Máy CloudLinux với php1_mode lsphp có thêm CloudLinux PHP Selector. Selector đó chỉ có hiệu lực khi domain đang dùng PHP instance số 1 của DirectAdmin. Vá alt-php bằng cập nhật gói CloudLinux, không trộn với Build PHP của CustomBuild.

Kiểm tra sau cập nhật

phpinfo trên đúng domain là nguồn đúng. Không tin mỗi nhãn 8.4 trên Domain Setup.

Xem CustomBuild Logs nếu site 502. Compile đứt giữa chừng để lại php-fpm chết hoặc socket cũ. Service Monitor, Start hoặc Restart php-fpmXX. XX khớp nhánh, ví dụ 84 cho 8.4.

Site trắng trang sau khi đổi 7.4 sang 8.4 thường do plugin hoặc theme, không do point release. Trả selector về nhánh cũ đã vá trên Domain Setup, rồi xử lý plugin trước khi nâng major.

OPcache có thể giữ bytecode cũ vài phút. Restart php-fpm sau Build. Không cần xóa cache WordPress nếu PHP Version trên Site Health đã đúng.

CLI php -v trên SSH là php1. Cron gọi /usr/local/bin/php sẽ dùng nhánh mặc định. Domain gắn php3 vẫn chạy FPM php3 cho HTTP, nhưng cron có thể còn php1. Kiểm tra Cron Jobs trên User nếu job gọi php.

Khi Build PHP báo lỗi biên dịch

Log CustomBuild ghi dòng install_php failed và thư mục cache tar.gz. Nguyên nhân thường gặp: thiếu thư viện devel, hết RAM, hệ điều hành hết hạn, patch 8.1 không apply sạch trên một số distro.

Debian 11, CentOS 7 dễ fail khi tải dependency. Ưu tiên snapshot, nâng OS, rồi Build lại. Không Uninstall PHP đang phục vụ site.

LiteSpeed compile SAPI lsphp có thể dừng ở sapi/litespeed/php. Khi đó cập nhật LiteSpeed trong CustomBuild Updates trước, rồi Build PHP lại. Đừng sửa binary bằng tay.

PHP 8.1 trên một số AlmaLinux có thể fail patch. Giữ 8.1 tạm, chuyển domain sang 8.3.36 hoặc 8.4.27 đã build thành công, rồi thử 8.1 sau.

Hết dung lượng /usr/local/directadmin/custombuild/tmp cũng làm Build fail. Kiểm tra ổ trên System Info, xóa cache CustomBuild từ giao diện nếu có mục Clean, rồi Build lại. Không chạy Build all.

Nếu chưa rebuild được ngay, chỉnh cấu hình trên giao diện

Chỉ dùng khi Build đang lỗi hoặc đang chờ snapshot. Không coi đây là vá xong.

php.ini mỗi nhánh nằm tại /usr/local/phpXX/lib/php.ini. Không sửa trực tiếp file này nếu CustomBuild sẽ ghi đè. Cách bền: File Manager với quyền Admin, tạo file 11-custom.ini trong /usr/local/phpXX/lib/php.conf.d cho từng nhánh đang chạy.

Với CVE-2026-109618: site không upload, đặt post_max_size = 8M. Site cần upload, đặt post_max_size = 32M và upload_max_filesize nhỏ hơn post_max_size. memory_limit = -1 giảm một đường tấn công. Ưu tiên php_admin_value trong pool FPM hoặc Custom HTTPD Configuration của Admin để website không ghi đè.

Với CVE-2026-109619: đặt session.upload_progress.enabled = 0. PHP 8.5 thêm fatal_error_backtraces = 0. Restart php-fpm sau khi lưu. Không dựa vào disable_functions hay display_errors. Không dùng .user.ini cho hai chỉ thị này, vì chúng phải có hiệu lực trước khi PHP phân tích request. User có thể bật lại upload_progress trong .user.ini nếu admin chỉ sửa php.ini thường.

Tắt domain không cần thiết trong Domain Setup, Suspend, cho đến khi PHP đã vá. Máy shared hosting nên ưu tiên rebuild php1 trước, vì số site mặc định lớn nhất.

Lịch hỗ trợ và việc nên làm sau ngày vá

PHP 8.5: hỗ trợ đầy đủ đến 31/12/2027, bảo mật đến 31/12/2029.

PHP 8.4: hỗ trợ đầy đủ đến 31/12/2026, bảo mật đến 31/12/2028.

PHP 8.3: chỉ còn bảo mật đến 31/12/2027.

PHP 8.2: bảo mật đến 31/12/2026.

PHP 8.1 trở về trước: hết hỗ trợ phía dự án PHP. Patch CustomBuild cho 8.1, 8.0, 7.4 là bước đệm.

PHP 8.6 đang ở giai đoạn ứng viên, dự kiến bản ổn định giữa tháng 11/2026. Không cài RC lên production để vá lỗ hổng này. Dùng 8.5.12 hoặc 8.4.27.

Sau khi vá, đặt php1_release là 8.4 hoặc 8.5, chuyển dần domain 8.2 sang nhánh mới trên Domain Setup, gỡ plugin không còn bảo trì, tắt display_errors trên production. Có thể bật cron CustomBuild với thông báo email để lần vá sau không bỏ sót, nhưng không bật tự động Build mọi gói trên máy bán hàng nếu chưa có cửa sổ bảo trì.

Câu hỏi thường gặp

Chỉ sửa php.ini có đủ không? Không. Chỉ rebuild PHP mới đóng lỗ hổng.

DirectAdmin dùng LiteSpeed hoặc OpenLiteSpeed có cần vá không? Có. Mọi cách phục vụ PHP trên web đều trong phạm vi.

Có nhiều domain, mỗi domain một PHP, phải Build mấy lần? Một lần Build PHP biên dịch mọi nhánh đang bật trong Settings. Tab Updates cho phép bấm từng nhánh. Domain không tự hưởng bản vá của nhánh khác.

Build xong phpinfo vẫn 8.4.25? Panel chưa lên bản có versions.txt mới, hoặc đang xem nhầm domain, hoặc chưa Restart php-fpm, hoặc trình duyệt cache. Mở phpinfo từ đúng public_html của domain.

PHP 7.4.33 sau Build có phải đã vá? Có thể. phpinfo không đổi số. Kiểm tra Updates không còn báo outdated, và CustomBuild đã áp patch CVE khi rebuild.

Nên lên 8.5 hay chờ 8.6? Production vá ngay 8.5.12 hoặc 8.4.27. 8.6 chỉ khi đã có bản ổn định và plugin tương thích.

WordPress chạy được bản vá này chứ? Có. WordPress không chặn 8.4 hay 8.5. Lỗi sau khi đổi major version thường do plugin cũ, không do point release bảo mật.

User tự Update PHP được không? Không. Chỉ Admin vào CustomBuild. User chỉ đổi selector giữa các nhánh admin đã cài.

Cập nhật PHP trên DirectAdmin sau 21/10/2026 là nâng panel, mở CustomBuild Updates, rebuild từng nhánh đã bật, Restart php-fpm, đối chiếu phpinfo với 8.5.12, 8.4.27, 8.3.36, 8.2.35, hoặc xác nhận patch 8.1, 8.0, 7.4 đã vào bản build. Xong việc này, máy mới ra khỏi cửa sổ tấn công của hai lỗ hổng RCE. Bước tiếp theo là rời PHP 8.2 và thấp hơn trước khi nhánh đó hết hạn vá.

Exit mobile version