`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

나에게 말한다 :

구성 : 오류 : 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가요?
Gherman

16

Debian wheezy에서 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 컴파일 방법
Daniel W.

작동하지만 모든 테스트 사례에 실패합니다.
Rafael

"--with-openssl"지시문을 사용하여 Ubuntu 14.04에서 PHP5.2 수동 컴파일을 수행합니다. 고마워
Dr 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 디렉토리에 include 파일이 있지만 라이브러리가 / usr / include / openssl에 없고 / usr / lib에 있기 때문에 pkg-config가 실패합니다.

디렉토리로 / usr을 사용하여 configure를 다시 실행하십시오.

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

인수로 전달 된 경로는 관련 자원을 찾기 위해 검색됩니다.


이것은 나를 위해 일했습니다. 이것은 좋은 해결책입니다.
Shawn Welch

이것은 데비안 wheezy + php 5.3.10에 대한 해결책이었습니다! 고맙습니다!!!!
holms

@ holms : 이제 PHP의 오래된 버전입니다. 특히 관리되는 패키지가 아닌 소스에서 컴파일 된 소스를 사용하려는 경우 최신 릴리스를 사용해야합니다.
symcbean

이 날 구축을위한 솔루션이었다 php-7.1.12Debian Jessie. 감사합니다
ako November

10

또 다른 이유 ./configurepkg-configPHP7 및 Debian Jessie와 같은 경우와 같이 설치 하지 않았기 때문입니다 .

sudo apt-get install pkg-config

2
그것은 이미 3 년 전과는 다른 대답으로 지적되었습니다.
kasperd

9

데비안 8.1 (Jessie)에서 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 파일을 찾을 위치를 파악하는 데 도움이 필요합니다. 기본적으로 디렉토리를 검색하고 디렉토리를 찾기 위해 하드 코드 된 접미사를 추가하기 때문입니다. 솔루션을 이해하려는 사람들을 위해 Wiki 페이지 에 세부 정보를 보관했습니다 . 나를 위해 일한 것은 다음과 같습니다.

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 (경로가 다름) 그래도 문제가 해결되지 않으면 wiki page확인하십시오 .


0

OpenSSL을 설치했지만 Fedora 19에서 같은 문제가 발생했습니다.

ssl과 관련된 모든 패키지를 일반 검색하여 openssl-devel.i686을 설치해야했습니다.

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

그냥 내 의견 : thsi 게시물 에서이 ssl 문제를 해결 한 후 중간에 zend dom 확장에 대해 더 이상 실패하지 않았기 때문에 PHP 5.3 컴파일을 완전히 포기하고 패치를 발견 했으며이 소란을 없애기로 결정했습니다. . 우분투 12.04는 여전히 5.3.10 PHP를 탑재하고 있습니다. php-fpm으로 돌아가 환경 변수를 지우십시오. 예를 들어 docker에서 전역 변수를 전달할 수 없을 때 놀라지 마십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.