Cách giải quyết `configure: error: Không thể tìm thấy <evp.h>` của OpenSSL?


33

Tôi đang cố gắng biên dịch lại PHP, nhưng ./mình không thành công tại:

configure: error: Cannot find OpenSSL's <evp.h>

Tôi đã cài đặt LibSSL 1.0.0, LibSSL 0.9.8, LibSSL-Dev, OpenSSL.

--with-openssl=/usr/include/openssl

khi tôi cố gắng với

--with-openssl

nói với tôi:

configure: error: Không thể tìm thấy các thư viện của OpenSSL

Trường hợp **** là vấn đề?

PS Php là 5.2.5, HĐH là Ubuntu

Câu trả lời:


47

Vấn đề tương tự xảy ra Ubuntu 12.04.1 LTSvà nó đã được giải quyết bằng cách ban hành:

sudo apt-get install libcurl4-openssl-dev pkg-config


Xin chào :) Tôi quên cách giải quyết vấn đề của mình. :) Đó là một nửa năm trước.
CappY

2
Làm thế nào libcurl4-openssl-devkhác với libssl-dev?
Gherman

16

Để xây dựng php-5.3 trên Debian wheezy, bạn cần có những cách sau để khắc phục lỗi này.

apt-get install libssl-dev libsslcommon2-dev

Sau đó, bạn cần phải cấu hình với bao gồm sau đây

./configure --with-libdir=/lib/x86_64-linux-gnu ...

2
1+, đã giúp tôi rất nhiều. Tôi cũng đã phải thêm --with-php-config /usr/local/src/php-x.x.x/scripts/php_config. Tôi đã viết một cách biên dịch PHP với các phần mở rộng.
Daniel W.

hoạt động nhưng không thành công tất cả các trường hợp thử nghiệm.
Rafael

Hoạt động để biên dịch thủ công PHP5.2 trên Ubuntu 14.04 với chỉ thị "--with-openssl". cảm ơn rất nhiều.
Tiến sĩ I

12

Giả sử rằng bạn đã có các thư viện OpenSSL và các tệp tiêu đề (trên các hệ thống vòng / phút, cái sau nằm trong gói xxxx-devel) ...

Vấn đề dường như phát sinh từ cách configuregiải quyết các phụ thuộc được phân phối xung quanh hệ thống tập tin. Để biên dịch mã, trình biên dịch cần biết các tiêu đề đang ở đâu. Để liên kết mã, trình liên kết cần biết các thư viện ở đâu.

[colin@host]$ configure .... --with-openssl-dir=/usr/include/openssl ....
...
checking OpenSSL dir for FTP... /usr/include/openssl
checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's <evp.h>

[colin@host]$ find /usr/include -name evp.h
/usr/include/openssl/evp.h

Thư mục bao gồm có tệp bao gồm, nhưng pkg-config không thành công vì thư viện không nằm trong / usr / include / openssl, trong / usr / lib

Chạy cấu hình lại với / usr làm thư mục:

configure .... --with-openssl-dir=/usr ....
...
checking OpenSSL dir for FTP... /usr
checking for pkg-config... /usr/bin/pkg-config
checking for OpenSSL version... >= 0.9.6
checking for CRYPTO_free in -lcrypto... yes
...

Đường dẫn được truyền dưới dạng đối số được tìm kiếm để tìm các tài nguyên có liên quan.


Điều này làm việc cho tôi. Đây là một giải pháp tốt.
Shawn Welch

Đây là giải pháp cho debian wheezy + php 5.3.10! Cảm ơn bạn!!!!
thánh

@holms: bây giờ là phiên bản cũ của php. Đặc biệt nếu bạn sẽ sử dụng các gói được biên dịch từ nguồn thay vì được quản lý, thì bạn nên sử dụng một bản phát hành gần đây.
symcbean 23/03/2017

Đây là giải pháp cho tôi xây dựng php-7.1.12trên Debian Jessie. Cảm ơn bạn
ako

10

Một lý do khác ./configurecó thể thất bại là vì bạn chưa pkg-configcài đặt, như trong trường hợp của tôi với PHP7 và Debian Jessie:

sudo apt-get install pkg-config

2
Điều đó đã được chỉ ra trong một câu trả lời khác nhau từ ba năm trước.
kasperd

9

Để biên dịch php-5.4.45 trên debian 8.1 (Jessie) tôi đã phải:

apt-get install libssl-dev

Sau đó tôi có thể biên dịch nó chỉ bằng cách sử dụng --with-openssl


2

Tôi đã khắc phục sự cố bằng cách cài đặt thêm thư viện

sudo apt-get install -y autoconf g++ make openssl libssl-dev libcurl4-openssl-dev
sudo apt-get install -y libcurl4-openssl-dev pkg-config
sudo apt-get install -y libsasl2-dev


0

Bạn cần giúp cấu hình để tìm ra nơi tìm tệp evp.h, bởi vì theo mặc định, nó sẽ quét các thư mục và thêm các hậu tố được mã hóa cứng vào chúng để tìm tệp. Tôi đã giữ các chi tiết trong trang wiki của mình cho những ai muốn hiểu giải pháp. Đây là những gì làm việc cho tôi:

root@audio-mon[10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # PHP_OPENSSL_DIR="/usr /usr/lib/x86_64-linux-gnu"
root@audio-mon[10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # ./configure --with-libdir=""
[...]
checking for DSA_get_default_method in -lssl... yes
checking for X509_free in -lcrypto... yes
checking for pkg-config... /usr/bin/pkg-config
checking for OpenSSL version... >= 0.9.6 #                     <------------------------------------- YES !
[...]
config.status: creating config.h
config.status: config.h is unchanged
root@audio-mon[10.10.10.82] ~/DOWNLOADS/php-5.5.23/ext/mysqlnd # 

YMMV (đường dẫn là khác nhau). Nếu điều đó không hiệu quả với bạn, hãy kiểm tra trang wiki , nó sẽ giúp bạn tìm ra những đường dẫn cần đặt.


0

Tôi gặp vấn đề tương tự trên Fedora 19 mặc dù đã cài đặt OpenSSL.

Tôi đã phải cài đặt openssl-devel.i686 mà tôi đã tìm thấy bằng cách thực hiện tìm kiếm chung cho tất cả các gói liên quan đến ssl:

sudo yum search ssl
sudo yum install openssl-devel.i686

Sau đó, tôi chạy cấu hình một lần nữa với thành công:

sudo ./configure --with-apxs2=/usr/bin/apxs --with-mysql --enable-mbstring --with-mysqli --with-openssl=/usr/

0

Chỉ là phản hồi của tôi: Sau khi giải quyết vấn đề ssl này từ bài đăng của thsi, tôi đã hoàn toàn từ bỏ việc biên dịch php 5.3 vì nó đã thất bại trong việc mở rộng zend dom ở giữa, tôi đã tìm thấy một số bản vá và quyết định bỏ qua sự phiền phức này . Có Ubuntu 12.04 vẫn còn 5.3.10 php trên tàu. Hãy cẩn thận php-fpm sau đó đã xóa các biến môi trường. Vì vậy, đừng ngạc nhiên khi bạn không thể chuyển các biến toàn cục từ docker chẳng hạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.