Як вирішити `configure: error: Не вдається знайти OpenSSL <evp.h>`?


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

Відповіді:


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 на Debian wheezy, вам потрібно виправити наступне, щоб виправити цю помилку.

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-openssl". дуже дякую.
Доктор I

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 містить файл включення, але pkg-config виходить з ладу, оскільки бібліотека не знаходиться в / usr / include / openssl, його в / 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
...

Шлях, пройдений як аргумент, шукається для пошуку відповідних ресурсів.


Це працювало для мене. Це хороше рішення.
Шон Уелч

Це було рішення на 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
На це вже вказувалося в іншій відповіді, ніж три роки тому.
kasperd

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


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

У мене була така ж проблема і у Fedora 19, незважаючи на те, що встановлено OpenSSL.

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

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

Лише мій відгук: Після вирішення цієї проблеми DSL з цієї посади я повністю відмовився від компіляції php 5.3, оскільки це не вдалося в майбутньому на розширення zend dom посередині, я знайшов кілька патчів і вирішив просто скинути цю суєту . Є ubuntu 12.04, який все ще має 5.3.10 php на борту. Будьте уважні php-fpm назад, тоді очищайте змінні середовища. Тому не дивуйтеся, коли, наприклад, не можете передати глобальні змінні з докера.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.