`कॉन्फ़िगर: त्रुटि को हल करने के लिए कैसे: OpenSSL के <evp.h>` नहीं मिल सकता है?


33

Im PHP को फिर से शुरू करने की कोशिश कर रहा है, लेकिन ./configure में विफल रहता है:

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

मेरे पास LibSSL 1.0.0, LibSSL 0.9.8, LibSSL-Dev, OpenSSL स्थापित हैं।

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

जब मैं कोशिश करता हूं

--with-openssl

मुझे बताता है:

कॉन्फ़िगर करें: त्रुटि: ओपनएसएसएल के पुस्तकालयों को नहीं खोज सकता

समस्या **** कहां हैं?

PS Php 5.2.5 है, OS उबंटू है

जवाबों:


47

एक ही समस्या हुई Ubuntu 12.04.1 LTSऔर इसे जारी करके हल किया गया:

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


हैलो :) मैं भूल गया कि मैं अपनी समस्या को कैसे हल करूं। :) यह डेढ़ साल पहले था।
CappY

2
कैसे libcurl4-openssl-devअलग है libssl-dev?
घर्मान

16

डेबियन मट्ठे पर php-5.3 बनाने के लिए आपको इस त्रुटि को ठीक करने के लिए निम्नलिखित की आवश्यकता है।

apt-get install libssl-dev libsslcommon2-dev

फिर आपको निम्नलिखित शामिल के साथ कॉन्फ़िगर करने की आवश्यकता है

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

2
1+, ने मेरी बहुत मदद की। मुझे भी जोड़ना था --with-php-config /usr/local/src/php-x.x.x/scripts/php_config। मैंने PHP को एक्सटेंशन के साथ संकलन करने के लिए कैसे
डैनियल डब्ल्यू।

काम करता है लेकिन सभी परीक्षण मामलों में विफल रहता है।
राफेल

PHP5.2 मैनुअल संकलन के लिए Ubuntu 14.04 पर "--with-coverssl" निर्देश के साथ काम करता है। बहुत बहुत धन्यवाद।
डॉ।

12

यह मानते हुए कि आपके पास पहले से ही ओपनएसएसएल लाइब्रेरी और हेडर फाइलें हैं (आरपीएम सिस्टम पर बाद में एक्सएक्सएक्सएक्स-डेकोर पैकेज में हैं) ...

यह समस्या इस बात से उत्पन्न होती है कि कैसे configureनिर्भरता को हल किया जाए जो कि फाइलसिस्टम के आसपास वितरित की जाती है। कोड संकलित करने के लिए, कॉइलर को यह जानना होगा कि हेडर कहां हैं। कोड को लिंक करने के लिए, लिंकर को यह जानना होगा कि पुस्तकालय कहां हैं।

[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

शामिल निर्देशिका में फ़ाइल शामिल है, लेकिन pkg-config विफल रहता है क्योंकि लाइब्रेरी में / usr / शामिल नहीं है / /ssl शामिल है, इसकी / usr / lib में

निर्देशिका के रूप में / usr के साथ फिर से कॉन्फ़िगर करना चालू करना:

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

एक तर्क के रूप में पारित मार्ग प्रासंगिक संसाधनों को खोजने के लिए खोजा जाता है।


इसने मेरे लिए काम किया। यह एक अच्छा उपाय है।
शॉन वेल्च

यह डेबियन व्हीज़ी + php 5.3.10 पर समाधान था! धन्यवाद!!!!
होम्स

@ ढोल: यह अब php का पुराना संस्करण है। विशेष रूप से यदि आप प्रबंधित पैकेजों के बजाय संकलित-से-स्रोत का उपयोग करने जा रहे हैं, तो आपको हालिया रिलीज़ का उपयोग करना चाहिए।
सिम्बियन

यह मैं के निर्माण के लिए समाधान था php-7.1.12पर Debian Jessie। धन्यवाद
Ako

10

एक और कारण ./configureविफल हो सकता है क्योंकि आपने pkg-configस्थापित नहीं किया है, जैसे PHP7 और डेबियन जेसी के साथ मेरे मामले में:

sudo apt-get install pkg-config

2
यह तीन साल पहले से एक अलग जवाब में पहले ही बताया गया था।
कैस्पर

9

डेबियन 8.1 (जेसी) पर php-5.4.45 को संकलित करने के लिए मुझे निम्न करना पड़ा:

apt-get install libssl-dev

उसके बाद मैं इसे सिर्फ उपयोग करके संकलित कर सकता था --with-openssl


2

मैंने अतिरिक्त लाइब्रेरी स्थापित करके इस मुद्दे को ठीक किया

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 फ़ाइल को कहाँ देखना है, क्योंकि डिफ़ॉल्ट रूप से यह निर्देशिकाओं के लिए स्कैन करेगा और इसे खोजने के लिए उनमें हार्डकोड प्रत्यय जोड़ देगा। मैंने अपने विकी पृष्ठ में उन लोगों के लिए विवरण रखा है जो समाधान को समझना चाहते हैं। यहाँ मेरे लिए क्या काम किया गया है:

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 (पथ अलग हैं)। यदि वह विकी पृष्ठ की जांच करने के लिए काम नहीं करता है , तो यह आपको यह पता लगाने में मदद करेगा कि कौन से रास्ते डालें।


0

ओपनएसएसएल स्थापित होने के बावजूद फेडोरा 19 पर मुझे यही समस्या थी।

मुझे Opensl-devel.i686 स्थापित करना था जो मुझे ss से संबंधित सभी पैकेजों के लिए एक सामान्य खोज करने से मिला:

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

फिर मैं सफलता के साथ फिर से कॉन्फ़िगर किया गया:

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

0

बस मेरी प्रतिक्रिया: ths पोस्ट से इस ssl समस्या को हल करने के बाद, मैंने पूरी तरह से php 5.3 संकलन पर छोड़ दिया है क्योंकि यह बीच में डोम एक्सटेंशन पर zend डोम पर विफल रहा है, मुझे कुछ पैच मिले हैं, और बस इस उपद्रव को छोड़ने का फैसला किया है । वहाँ ubuntu 12.04 है जो अभी भी 5.3.10 php बोर्ड पर है। सावधान रहें php-fpm वापस तो पर्यावरण चर साफ़ कर रहा है। इसलिए आश्चर्यचकित न हों जब आप उदाहरण के लिए docker से वैश्विक चर पास नहीं कर सकते।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.