2017-02-17 20 views
6

PHP 7.1.2 là ở đây, tôi đã cố gắng để biên dịch nó như thường nhưng lần này ./configure thất bại với những lỗi:PHP 7.1.2 biên soạn và libcurl lỗi

checking for cURL in default path... not found
configure: error: Please reinstall the libcurl distribution - easy.h should be in /include/curl/

Tôi đang trên Debian Stretch (9).

tôi thấy libcurl4-openssl-dev được cài đặt trong/usr/include/x86_64-linux-gnu/curl when ./configure expect it in/include/curl/`

libcurl4-openssl-dev trên debian Jessie cài đặt curl trong/usr/include/curl/khi Stretch install curl trong/usr/include/x86_64-linux-gnu/curl.

Với phiên bản PHP cuối cùng tôi đã biên soạn (7.1.1), tôi không gặp vấn đề gì, nhưng lần này không thành công.

Để biên dịch:

./buildconf --force && ./configure --prefix=/usr/local/php --with-config-file-path=/etc/php/lib --enable-bcmath --with-bz2 --with-zlib --enable-zip --enable-calendar --enable-exif --enable-ftp --with-gettext --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-xpm-dir --enable-mbstring --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --enable-intl --enable-soap --with-readline --with-curl --with-mcrypt --with-xsl --enable-sockets 

curllibcurl4-openssl-dev gói được cài đặt

Tôi đã thử với --with-curl =/usr/include/x86_64-linux-gnu/curl/nhưng nó doesn' t làm việc.

Tôi không biết cách giải quyết vấn đề này, ai đó có thể biết được không?

+0

xem xét kỹ hơn tệp 'config.log' sau khi không nhận được chi tiết cụ thể hơn về kiểm tra không thành công –

Trả lời

1

Bạn nên cài đặt gói libcurl4-gnutls-dev.

This package provides the development files (ie. includes, static library, manual pages) that allow one to build software which uses libcurl .

Để cài đặt libcurl4-gnutls-dev:

sudo apt-get install libcurl4-gnutls-dev 
+0

Tôi đã thử nhưng không thay đổi gì cả. Cài đặt libcurl4-gnutls-dev sẽ xóa libcurl4-openssl-dev. Các tệp được yêu cầu bởi php được cài đặt (easy.h) nhưng không nằm trong đường dẫn mong đợi. Đó là "mới", cho đến 7.1.2 tôi được sử dụng để biên dịch mỗi phiên bản php mới theo cách đó và nó hoạt động mọi lúc. Nhưng lần này tôi không thể biên dịch PHP vì đường dẫn không khớp với yêu cầu. – krazitchek

+0

@krazitchek dùng thử với './ configure --prefix =/usr' – GAD3R

+1

Không có gì thay đổi, cùng lỗi. Tôi không chắc chắn nhưng tôi nghĩ rằng một cái gì đó thay đổi trong gói libcurl4-openssl-dev trong debian 8 jessie (https://packages.debian.org/fr/jessie/amd64/libcurl4-openssl-dev/filelist) và debian 9 stretch (https://packages.debian.org/fr/stretch/amd64/libcurl4-openssl-dev/filelist). Chúng ta có thể thấy trên hai url đó đường dẫn không giống nhau cho cùng một gói. Yêu cầu so khớp phiên bản Jessie (/usr/include/curl/easy.h) trong khi phiên bản kéo dài không khớp với yêu cầu (/usr/include/x86_64-linux-gnu/curl/easy.h). – krazitchek

4

Một giải pháp tạm thời là để tạo ra một liên kết sym tại /usr/local/include/curl trỏ đến /usr/include/x86_64-linux-gnu/curl và biên dịch PHP với --with-curl=/usr/local.

Ví dụ: lệnh từ trong số /usr/local/include làm người dùng root hoặc sử dụng sudo ln -s /usr/include/x86_64-linux-gnu/curl curl.

Đối với những người khác đang tìm kiếm sự cố này, hãy thay thế x86_64 bằng kiến ​​trúc của bạn.

Tôi không thể cho bạn biết đó là lỗi hay hậu quả không mong muốn của các cập nhật đối với các gói libcurl4-gnutls-devlibcurl4-openssl-dev. Bạn sẽ nhận thấy rằng nếu bạn cố gắng biên dịch các phiên bản trước của PHP, chúng cũng sẽ thất bại với lỗi curl bị thiếu, vì đơn giản, các gói phát triển mới không tạo các tệp được yêu cầu mà PHP mong đợi chúng.

Tôi gọi đây là giải pháp tạm thời vì bản cập nhật trong Debian có thể khắc phục điều này bằng cách đặt liên kết tượng trưng hoặc cái gì đó ở cấu trúc mặc định của bạn hoặc tập lệnh cấu hình PHP sẽ được cập nhật. Lý do bạn sử dụng --with-curl=/usr/local là tập lệnh cấu hình PHP muốn "những gì bạn chỉ định" và nối thêm /include/curl.