BizMaC bizmac.com

Sửa lỗi libzip khi build PHP trên DirectAdmin

Hướng dẫn DirectAdmin · cập nhật 14/08/2026

Để sửa lỗi libzip khi build PHP trên DirectAdmin, bạn gỡ libzip 0.10.1 của CentOS 7, cài bản 0.11 trở lên, rồi chạy lại ./build php n. Toàn bộ mất khoảng 30 phút, phần lớn là thời gian chờ build.

Lỗi xuất hiện khi nâng PHP lên 7.3 hoặc cao hơn. CustomBuild dừng ở bước cấu hình và in ra:

configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met
Requested 'libzip >= 0.11' but version of libzip is 0.10.1
  1. Xác nhận máy đang chạy libzip bản nào.
  2. Gỡ libzip cũ, cài bản mới bằng gói RPM hoặc biên dịch từ nguồn.
  3. Chạy lại lệnh build PHP.
  4. Kiểm tra PHP và extension zip đã hoạt động.
Đã kiểm trên CentOS 7 với DirectAdmin CustomBuild 2.0. CentOS 7 hết hỗ trợ từ 30/06/2024, bài giữ cho máy chủ cũ còn đang chạy.

Vì sao PHP 7.3 trở lên đòi libzip mới hơn

Từ PHP 7.3, extension zip không còn mang bản thư viện riêng bên trong mã nguồn PHP nữa mà dùng thư viện cài sẵn trên hệ thống. Bản tối thiểu là 0.11 vì extension cần các hàm mà bản 0.10 chưa có. CentOS 7 phát hành năm 2014 và kho gói chính thức giữ nguyên bản 0.10.1 suốt vòng đời, nên máy chủ CentOS 7 gặp lỗi này còn Ubuntu hay AlmaLinux đời mới thì không.

Hai bản 1.3.1 và 1.7.0 bị loại trừ ngay trong thông báo lỗi vì chúng có lỗi đã biết, PHP chủ động không nhận.

Nên cài libzip bằng gói RPM hay biên dịch từ nguồn

Hai cách cho kết quả như nhau. Gói RPM nhanh hơn vì không phải biên dịch, nhưng phụ thuộc kho bên thứ ba. Biên dịch từ nguồn mất thêm vài phút nhưng lấy file thẳng từ trang chủ nên luôn tải được. Chọn RPM trước, hỏng thì chuyển sang biên dịch.

Tiêu chíGói RPM dựng sẵnBiên dịch từ nguồn
Thời gianDưới 1 phút3 tới 5 phút
Nguồn tảipackages.psychotic.ninja (bên thứ ba)libzip.org (trang chủ)
Rủi roKho có lúc không truy cập đượcCần gói biên dịch trên máy
Nên dùng khiMáy chủ vào được kho RPMKho RPM lỗi hoặc muốn dùng nguồn chính thức

Cách sửa lỗi libzip khi build PHP trên DirectAdmin

Bốn bước dưới đây chạy trực tiếp trên máy chủ qua SSH. Bạn cần quyền root và một khung giờ ít truy cập, vì build PHP mất 10 tới 20 phút và website trên máy sẽ gián đoạn trong lúc đó.

1. Xác nhận bản đang cài

Đăng nhập SSH rồi chạy:

rpm -qa | grep libzip

Kết quả trả về libzip-0.10.1 nghĩa là đúng nguyên nhân nêu trên. Nếu ra bản 0.11 trở lên mà build vẫn lỗi, xem phần xử lý sự cố ở cuối bài.

2. Gỡ bản cũ và cài bản mới

Cách 1, cài từ gói RPM dựng sẵn:

yum remove libzip libzip-devel -y
rpm -ihf http://packages.psychotic.ninja/7/plus/x86_64/RPMS//libzip-0.11.2-6.el7.psychotic.x86_64.rpm
rpm -ihf http://packages.psychotic.ninja/7/plus/x86_64/RPMS//libzip-devel-0.11.2-6.el7.psychotic.x86_64.rpm

Yum liệt kê các gói phụ thuộc trước khi gỡ. Đọc danh sách đó và ghi lại, vì có thể phải cài lại sau khi build xong.

Cách 2, biên dịch từ mã nguồn:

yum remove libzip libzip-devel -y
wget https://libzip.org/download/libzip-0.11.tar.gz
tar -xzvf libzip-0.11.tar.gz
cd libzip-0.11
./configure
make
sudo make install

3. Build lại PHP

cd /usr/local/directadmin/custombuild
./build php n

Lệnh chạy 10 tới 20 phút tuỳ cấu hình máy. Đừng đóng phiên SSH giữa chừng. Nếu đường truyền hay rớt, chạy trong screen hoặc tmux để tiến trình không dừng theo.

4. Kiểm tra kết quả

rpm -qa | grep libzip
php -v
php -m | grep zip

Xong đúng khi libzip từ 0.11 trở lên, php -v in ra phiên bản không kèm dòng lỗi nào, và php -m có dòng zip. Mở thử một website trên máy để chắc nó còn chạy bình thường.

Xử lý các lỗi thường gặp khi build PHP

Bốn tình huống dưới đây chiếm phần lớn các ca build thất bại sau khi thay thư viện. Mỗi tình huống có dấu hiệu riêng nên nhìn thông báo là biết rơi vào ca nào.

Vẫn báo lỗi cũ dù đã cài bản mới. CustomBuild giữ lại kết quả cấu hình của lần chạy trước. Xoá bộ nhớ đệm rồi build lại:

cd /usr/local/directadmin/custombuild
./build clean
./build php n

Yum đòi gỡ thêm nhiều gói khác. Đó là các gói phụ thuộc. Ghi lại tên trước khi xác nhận, cài lại bằng yum install sau khi build xong.

Không tải được gói RPM. Kho packages.psychotic.ninja thuộc bên thứ ba nên có lúc không truy cập được. Chuyển sang cách 2, biên dịch từ nguồn.

Website trả lỗi 500 sau khi build. Một extension PHP cũ không tương thích với bản vừa build. Xem /var/log/httpd/error_log để biết extension nào đang lỗi, tắt nó trong php.ini rồi khởi động lại web server.

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

Build PHP có làm mất dữ liệu website không?

Không. Lệnh build chỉ dựng lại phần mềm PHP, không đụng tới file website hay cơ sở dữ liệu. Nhưng website sẽ không truy cập được trong 10 tới 20 phút build, nên chọn khung giờ ít khách.

Gỡ libzip có ảnh hưởng dịch vụ nào đang chạy không?

Có thể. Lệnh gỡ kéo theo mọi gói phụ thuộc vào nó, thường là các công cụ nén file. Đọc danh sách yum liệt kê trước khi xác nhận, ghi lại rồi cài lại sau.

Máy chủ AlmaLinux hay Ubuntu có gặp lỗi này không?

Không. AlmaLinux 8 trở lên và Ubuntu 20.04 trở lên đều có bản 1.5 trở lên trong kho chính thức, vượt xa mức PHP đòi. Lỗi này chỉ xảy ra trên CentOS 7 vì kho gói của nó đứng yên từ 2014.

Có cách nào tránh mà không phải gỡ thư viện không?

Có, nếu bạn chấp nhận build PHP không kèm extension zip. Sửa file /usr/local/directadmin/custombuild/custom/php/configure.php để bỏ tuỳ chọn zip. Nhưng nhiều mã nguồn website cần extension này, nên cách đó chỉ hợp khi bạn chắc chắn không dùng tới.

Việc nên làm tiếp sau khi build xong

CentOS 7 đã hết hỗ trợ từ 30/06/2024, tức không còn bản vá bảo mật. Lỗi này là dấu hiệu của việc kho gói đứng yên trong khi phần mềm phía trên tiếp tục đi tới, và sẽ còn những lỗi tương tự với thư viện khác.

Nếu máy chủ còn chạy dịch vụ thật, nên tính đường chuyển sang AlmaLinux 9 hoặc Ubuntu 22.04. Cả hai đều có thư viện đời mới trong kho chính thức và còn nhận bản vá trong nhiều năm nữa. Kỹ thuật BizMaC hỗ trợ chuyển dữ liệu khi bạn gửi yêu cầu từ tài khoản đang dùng dịch vụ.

Hướng dẫn này có giúp được Anh/Chị không?

Bài khác trong DirectAdmin

Xem cả 31 bài
Bật tắt extension PHP trên DirectAdmin Vào Extra Features rồi Select PHP version để tích hoặc bỏ tích extension. Nên bật thư viện nào cho WordPress, cách xác nhận đã nạp và lỗi hay gặp. 7 phút đọc 122 lượt xem Cập nhật 28/08/2026 Khôi phục website trên DirectAdmin từ bản sao lưu Đưa tệp sao lưu lên hosting, chọn đúng phần dữ liệu cần đưa về và kiểm website sau khi khôi phục, kèm cách chọn bản nào khi có nhiều bản. 8 phút đọc 150 lượt xem Cập nhật 26/08/2026 Khắc phục lỗi License has expired DirectAdmin DirectAdmin báo License has expired khi bản quyền hết hạn hoặc máy chủ đổi IP. Cách chạy getLicense.sh để tải lại license và mở khoá bảng điều khiển. 6 phút đọc 221 lượt xem Cập nhật 26/08/2026 Xoá tin nhắn hệ thống trên DirectAdmin Dọn hộp tin nhắn hệ thống DirectAdmin bằng giao diện hoặc dòng lệnh, kèm bảng phân loại tin nào đáng đọc trước khi xoá và cách giảm tin sinh ra. 8 phút đọc 119 lượt xem Cập nhật 26/08/2026 Cài SSL Let's Encrypt miễn phí trên DirectAdmin Let's Encrypt cấp chứng chỉ SSL miễn phí, hạn 90 ngày và tự gia hạn. Cách bật trong DirectAdmin và xử lý lỗi khi xin chứng chỉ. 5 phút đọc 103 lượt xem Cập nhật 23/08/2026 Cài đặt mcrypt cho PHP 7.2 trên DirectAdmin PHP 7.2 gỡ mcrypt khỏi lõi và đẩy sang PECL. Cách tải mã nguồn, biên dịch đúng bản PHP 7.2 rồi khai báo extension, kèm hướng chuyển sang OpenSSL. 6 phút đọc 133 lượt xem Cập nhật 23/08/2026

Làm theo vẫn chưa được?

Gửi yêu cầu hỗ trợ, kỹ thuật xem trực tiếp trên dịch vụ của Anh/Chị.

Gửi yêu cầu hỗ trợ