[Linux] Fix lỗi compile source PHP 5.6 với tính năng hỗ trợ zip

Với bài viết này mình sẽ đề cập đến cách khắc phục lỗi compile source PHP 5.6 liên quan đến tính năng hỗ trợ nén zip của PHP.

Khi mình compile source PHP 5.6 thì bị dính thông báo lỗi như ở dưới, ở phần “./configure” thì chạy ngon lành không thông báo lỗi gì nhưng ở phần tiến hành build “make” là sẽ gặp lỗi đó. Directory chứa php 5.6 của mình được chỉ định riêng ngoài các thư mục mẫu thường dùng (–prefix=/opt/php56).

Lưu ý :
– Bạn sử dụng option “–enable-zip” khi tiến hành “configure” thì mới dẫn đến lỗi log này.

Log lỗi :

Compilation fails with the error:
....
In file included from /usr/local/src/php-5.6.24/ext/zip/lib/zip_add.c:37:
/usr/local/src/php-5.6.24/ext/zip/lib/zipint.h:118:2: error: #error unsupported size of off_t
make: *** [ext/zip/lib/zip_add.lo] Error 1

 
Tìm hiểu 1 hồi thì có 2 hướng xử lý, và mình áp dụng thì thành công ở cách 1: 

Cách 1 : gán biến môi trường thư viện “xml2”

– Do bạn build tay và sử dụng cấu hình “configure” riêng nên source code khi compile có khả năng không tìm thấy thư viện “libxml2” ở các đường dẫn thư mục tiêu chuẩn điều này dẫn đến phát sinh lỗi khi cố gắng xác định kích thước của “off_t“.
– Vậy điều bạn cần làm lúc này là, nếu bạn chưa cài đặt “libxml2” thì bạn hãy cài đặt ngay thư viện “libxml2” đi bằng yum hay compile thư viện của nó. Sau đó hãy xác định đường dẫn thư mục của thư viện “libxml2” nằm ở đâu và chúng ta sẽ chỉ định đường dẫn đó ra biến môi trường sử dụng khi compile source PHP 5.6
– Giả sử thư viện “libxml2” của mình nằm ở “/opt/xml2/lib” thì ta sẽ set biến như sau :

# export CFLAGS="-L/opt/xml2/lib"

– Rồi sau đó chạy lại “configure” và tiến hành build như bình thường sẽ hết gặp lỗi.

 
Cách 2 : gán biến môi trường thư viện “mysql”

– Cũng như ở trên thì trường hợp này khi tiến hành compile không tìm thấy đường dẫn thư mục thư viện của MySQL trong trường hợp bạn có 2 option “–enable-zip –with-mysql=/usr/local/mysql/” khi configure. Vậy nên ở cách 2 ta cũng sẽ set biến cụ thể dành cho hoạt động compile source PHP 5.6 về thư viện MySQL. Bạn sẽ làm như sau :

# export LD_LIBRARY_PATH="/usr/local/mysql/lib"

 
– Tiến hành chạy lại cấu trúc “configure” rồi tiếp tục công việc build thì sẽ bình thường không lỗi.

 
Hy vọng các bạn tìm được phương án xử lý phù hợp ở bài viết này.

Previous article[ShellScript] Hướng dẫn loại bỏ kí tự “^M” trong các file text trên Linux
Next article[Linux] Hướng dẫn tìm đường dẫn tuyệt đối của lệnh trên Linux bằng “whereis” và “which”
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !