`Configure: error: OpenSSL'nin <evp.h>` dosyasını bulamıyor musunuz?


33

PHP'yi yeniden derlemeye çalışıyorum, ancak ./configure de başarısız oluyor:

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

LibSSL 1.0.0, LibSSL 0.9.8, LibSSL-Dev, OpenSSL yüklü.

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

denediğimde

--with-openssl

bana söyler:

configure: error: OpenSSL kütüphaneleri bulunamıyor

**** nerede sorun?

PS Php 5.2.5, İşletim Sistemi Ubuntu

Yanıtlar:


47

Aynı sorun yaşandı Ubuntu 12.04.1 LTSve yayınlanmasıyla çözüldü:

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


Merhaba :) Sorunumu nasıl çözeceğimi unuttum. :) Yarım yıl önceydi.
CappY

2
Nasıl libcurl4-openssl-devfarklı libssl-dev?
Gherman

16

Php-5.3'ü Debian wheezy'de oluşturmak için bu hatayı düzeltmek için aşağıdakilere ihtiyacınız vardır.

apt-get install libssl-dev libsslcommon2-dev

O zaman aşağıdakileri de dahil ederek yapılandırmanız gerekir.

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

2
1+, bana çok yardımcı oldu. Ayrıca eklemek zorunda kaldım --with-php-config /usr/local/src/php-x.x.x/scripts/php_config. PHP bir uzantıları ile nasıl derleneceği
Daniel W.

çalışır ancak tüm test durumlarında başarısız olur.
Rafael,

PHP5.2'nin Ubuntu 14.04'te "--with-openssl" yönergesiyle derlenmesiyle çalışır. çok teşekkürler.
Dr I

12

OpenSSL kütüphanelerine ve başlık dosyalarına zaten sahip olduğunuzu varsayalım (rpm sistemlerinde ikincisi xxxx-devel paketindedir) ...

Sorun configure, dosya sistemi etrafına dağılmış olan bağımlılıkların nasıl çözüldüğünden kaynaklanıyor gibi görünüyor . Kodu derlemek için, derleyicinin başlıkların nerede olduğunu bilmesi gerekir. Kodu bağlamak için, bağlayıcının kütüphanelerin nerede olduğunu bilmesi gerekir.

[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

İnclude dizini include dosyasına sahiptir, fakat kütüphane / usr / include / openssl dosyasında olmadığı için pkg-config başarısız olur , / usr / lib içinde

Configure ile yeniden çalıştırmak için / usr dizinini kullanın:

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

Bir argüman olarak geçen yol, ilgili kaynakları bulmak için aranır.


Bu benim için çalıştı. Bu iyi bir çözüm.
Shawn Welch

Bu, debian wheezy + php 5.3.10'daki çözümdü! Teşekkür ederim!!!!
17'de

@ holms: Bu şimdi php oldukça eski bir versiyonu. Özellikle, yönetilen paketlerden ziyade derlenmiş kaynaktan kullanacaksanız, o zaman yeni bir sürüm kullanmalısınız.
symcbean

Bu beni oluşturmak için çözüm oldu php-7.1.12üzerinde Debian Jessie. Thank you
ako

10

Başka bir neden ./configurebaşarısız olabilir, çünkü pkg-configPHP7 ve Debian Jessie ile olan durumumda:

sudo apt-get install pkg-config

2
Bu, üç yıl öncesinden farklı bir cevapta çoktan işaret edilmişti.
kasperd

9

Php-5.4.45'i debian 8.1 (Jessie) ile derlemek için yapmam gerekenler:

apt-get install libssl-dev

Bundan sonra sadece kullanarak derlemek olabilir --with-openssl


2

Fazladan kütüphaneler kurarak bu sorunu düzelttim

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

Evp.h dosyasını nerede arayacağınıza karar vermenize yardımcı olması gerekir, çünkü varsayılan olarak dizinleri tarar ve bulması için kodlanmış sonekler ekler. Çözümü anlamak isteyenler için wiki sayfamdaki detayları sakladım . İşte benim için çalıştı ne:

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 (yollar farklı). Bu işe yaramadıysa , wiki sayfasını kontrol edin, hangi yolları koyacağınızı bulmanıza yardımcı olur.


0

OpenSSL'nin kurulmasına rağmen aynı sorunu Fedora 19'da da yaşadım.

Ssl ile ilgili tüm paketler için genel bir arama yaparak bulduğum openssl-devel.i686 dosyasını kurmak zorunda kaldım:

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

Sonra tekrar başarılı bir şekilde yapılandırmayı koştum:

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

0

Sadece benim geri bildirimim: Bu ssl problemini bu yazıdan çözdükten sonra, php 5.3'ü derlemekten tamamen vazgeçtim, çünkü ortadaki zend dom uzantılarında daha da başarısız oldu, bazı yamalar buldum ve bu telaşı bırakmaya karar verdim . Gemide hala 5.3.10 php olan ubuntu 12.04 var. Php-fpm'ye dikkat edin, sonra ortam değişkenlerini temizleyin. Bu nedenle, örneğin docker’dan global değişkenleri geçemediğinizde şaşırmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.