Назад | Перейти на главную страницу

How to solve `configure: error: Cannot find OpenSSL's <evp.h>`?</evp.h>

Я пытаюсь перекомпилировать 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

говорит мне:

configure: error: не удается найти библиотеки OpenSSL

Где, черт возьми, проблема?

P.S. Php - 5.2.5, ОС - Ubuntu

Та же проблема возникла на Ubuntu 12.04.1 LTS и это было решено выдачей:

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

Чтобы собрать php-5.3 на Debian wheezy, вам понадобится следующее, чтобы исправить эту ошибку.

apt-get install libssl-dev libsslcommon2-dev

Затем вам необходимо настроить следующие включенные

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

Предполагая, что у вас уже есть библиотеки OpenSSL и файлы заголовков (в системах rpm последние находятся в пакете xxxx-devel) ...

Проблема, кажется, возникает из-за того, как 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

В каталоге include есть включаемый файл, но pkg-config не работает, потому что библиотека не в / usr / include / openssl, его в / usr / lib

Снова запустите configure с / 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
...

Путь, переданный в качестве аргумента, ищется, чтобы найти соответствующие ресурсы.

Другой причиной ./configure может потерпеть неудачу, потому что у вас нет pkg-config установлен, как и в моем случае с PHP7 и Debian Jessie:

sudo apt-get install pkg-config

Чтобы скомпилировать php-5.4.45 на debian 8.1 (Jessie), мне пришлось:

apt-get install libssl-dev

После этого я мог скомпилировать его, просто используя --with-openssl

Я исправил проблему, установив дополнительные библиотеки

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

На centos7 Установите openssl-devel yum install openssl-devel

Вам нужно помочь настроить выяснение, где искать файл 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 (пути разные). Если это не сработало для вас проверьте страницу вики, это поможет вам понять, какие пути нужно поставить.

У меня была такая же проблема с Fedora 19, несмотря на установленный OpenSSL.

Мне пришлось установить openssl-devel.i686, который я нашел, выполнив общий поиск всех пакетов, связанных с ssl:

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

Затем я снова успешно запустил configure:

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

Только мой отзыв: после решения этой проблемы ssl из этого сообщения я полностью отказался от компиляции php 5.3, потому что он не работал дальше на расширениях zend dom посередине, я нашел несколько патчей и решил просто отказаться от этой суеты . Есть ubuntu 12.04, в котором все еще есть 5.3.10 php. Будьте осторожны, тогда php-fpm очищал переменные среды. Так что не удивляйтесь, если, например, вы не можете передать глобальные переменные из докера.