Как решить `configure: error: Невозможно найти <evp.h> OpenSSL`?

33

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

Где **** проблема?

PS Php - 5.2.5, ОС - Ubuntu

Cappy
источник

Ответы:

47

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

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

Антила
источник
Привет :) Я забыл, как решить мою проблему. :) Это было пол года назад.
CappY
2
Чем libcurl4-openssl-devотличается от libssl-dev?
Gherman
16

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

apt-get install libssl-dev libsslcommon2-dev

Затем вам нужно настроить следующее

./configure --with-libdir=/lib/x86_64-linux-gnu ...
JinnKo
источник
2
1+, мне очень помогло. Я также должен был добавить --with-php-config /usr/local/src/php-x.x.x/scripts/php_config. Я написал инструкции по компиляции PHP с расширениями.
Даниэль В.
работает, но не проходит все тесты
Рафаэль
Работает для ручной сборки PHP5.2 в Ubuntu 14.04 с директивой --with-openssl. большое спасибо.
Доктор Я
12

Предполагая, что у вас уже есть библиотеки 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 есть файл 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
...

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

symcbean
источник
Это сработало для меня. Это хорошее решение.
Шон Уэлч
Это было решением для Debian Wheezy + PHP 5.3.10! Спасибо!!!!
Holms
@holms: теперь это довольно старая версия php. В частности, если вы собираетесь использовать скомпилированные из исходных кодов, а не управляемые пакеты, вам следует использовать недавний выпуск.
Symcbean
Это было решение для меня, основывающееся php-7.1.12на Debian Jessie. Спасибо
АКО
10

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

sudo apt-get install pkg-config
Разван Григоре
источник
2
На это уже указывалось в другом ответе от трехлетней давности.
Касперд
9

Для компиляции php-5.4.45 на Debian 8.1 (Jessie) мне пришлось:

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
Toir427
источник
1

На centos7 установить openssl-devel yum install openssl-devel

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

ychaouche
источник
0

У меня была такая же проблема на 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/
Энтони
источник
0

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

Holms
источник