Bagaimana mengatasi `configure: error: Tidak dapat menemukan <evp.h>` OpenSSL?

33

Saya mencoba mengkompilasi ulang PHP, tetapi ./configure gagal di:

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

Saya memiliki LibSSL 1.0.0, LibSSL 0.9.8, LibSSL-Dev, OpenSSL diinstal.

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

ketika saya mencoba

--with-openssl

Beritahu aku:

configure: error: Tidak dapat menemukan perpustakaan OpenSSL

Di mana **** masalahnya?

PS Php adalah 5.2.5, OS adalah Ubuntu

Cty
sumber

Jawaban:

47

Masalah yang sama terjadi pada Ubuntu 12.04.1 LTSdan diselesaikan dengan mengeluarkan:

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

antila
sumber
Halo :) Saya lupa bagaimana cara menyelesaikan masalah saya. :) Itu setengah tahun yang lalu.
CappY
2
Bagaimana libcurl4-openssl-devbedanya libssl-dev?
Gherman
16

Untuk membangun php-5.3 di Debian wheezy Anda perlu yang berikut untuk memperbaiki kesalahan ini.

apt-get install libssl-dev libsslcommon2-dev

Maka Anda perlu mengkonfigurasi dengan yang berikut ini

./configure --with-libdir=/lib/x86_64-linux-gnu ...
JinnKo
sumber
2
1+, banyak membantu saya. Saya juga harus menambahkan --with-php-config /usr/local/src/php-x.x.x/scripts/php_config. Saya telah menulis bagaimana cara mengkompilasi PHP dengan ekstensi.
Daniel W.
berfungsi tetapi gagal semua kasus uji.
Rafael
Berfungsi untuk kompilasi manual PHP5.2 di Ubuntu 14.04 dengan direktif "--with-openssl". Terima kasih banyak.
Dr I
12

Dengan asumsi bahwa Anda sudah memiliki pustaka OpenSSL dan file header (pada sistem rpm yang terakhir adalah dalam paket xxxx-devel) ...

Masalah ini tampaknya muncul dari bagaimana configuremenyelesaikan dependensi yang didistribusikan di sekitar sistem file. Untuk mengkompilasi kode, comiler perlu tahu di mana header berada. Untuk menghubungkan kode, penghubung perlu tahu di mana perpustakaan berada.

[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

Direktori include memiliki file include, tetapi pkg-config gagal karena pustaka tidak ada di / usr / include / openssl, di / usr / lib

Menjalankan konfigurasi lagi dengan / usr sebagai direktori:

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
...

Jalan yang dilewati sebagai argumen dicari untuk menemukan sumber daya yang relevan.

symcbean
sumber
Ini berhasil untuk saya. Ini solusi yang bagus.
Shawn Welch
Ini adalah solusi untuk debian wheezy + php 5.3.10! Terima kasih!!!!
holms
@holms: itu sekarang versi php yang agak lama. Khususnya jika Anda akan menggunakan paket yang dikompilasi-dari-sumber daripada yang dikelola, maka Anda harus menggunakan rilis terbaru.
symcbean
Ini adalah solusi untuk saya membangun php-7.1.12di Debian Jessie. Terima kasih
ako
10

Alasan lain ./configuremungkin gagal adalah karena Anda belum pkg-configmenginstal, seperti dalam kasus saya dengan PHP7 dan Debian Jessie:

sudo apt-get install pkg-config
Razvan Grigore
sumber
2
Itu sudah ditunjukkan dalam jawaban yang berbeda dari tiga tahun lalu.
kasperd
9

Untuk mengkompilasi php-5.4.45 pada debian 8.1 (Jessie) saya harus:

apt-get install libssl-dev

Setelah itu saya bisa mengkompilasinya hanya menggunakan --with-openssl

steven
sumber
2

Saya memperbaiki masalah ini dengan menginstal perpustakaan tambahan

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
Toir427
sumber
1

Pada centos7 Instal openssl-devel yum install openssl-devel

Uriel Acosta Hernández
sumber
0

Anda perlu membantu mengkonfigurasi mencari tahu di mana harus mencari file evp.h, karena secara default itu akan memindai direktori dan menambahkan sufiks yang telah di-hardcod kepada mereka untuk menemukannya. Saya telah menyimpan detailnya di halaman wiki saya untuk mereka yang ingin memahami solusinya. Inilah yang bekerja untuk saya:

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 (jalur berbeda). Jika itu tidak berhasil untuk Anda memeriksa halaman wiki , itu akan membantu Anda mencari tahu jalan apa yang harus diletakkan.

ychaouche
sumber
0

Saya memiliki masalah yang sama pada Fedora 19 meskipun OpenSSL telah diinstal.

Saya harus menginstal openssl-devel.i686 yang saya temukan dengan melakukan pencarian umum untuk semua paket yang berkaitan dengan ssl:

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

Kemudian saya menjalankan konfigurasi lagi dengan sukses:

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

Hanya umpan balik saya: Setelah menyelesaikan masalah ssl ini dari postingan ini, saya sepenuhnya menyerah untuk mengkompilasi php 5.3 karena gagal lebih jauh pada ekstensi zend dom di tengah, saya telah menemukan beberapa tambalan, dan memutuskan untuk menghentikan keributan ini. . Ada ubuntu 12.04 yang masih memiliki 5.3.10 php on board. Hati-hati php-fpm saat itu telah membersihkan variabel lingkungan. Jadi jangan heran ketika Anda tidak bisa mengirimkan variabel global dari buruh pelabuhan misalnya.

holms
sumber