Я пытаюсь перекомпилировать 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 очищал переменные среды. Так что не удивляйтесь, если, например, вы не можете передать глобальные переменные из докера.