`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はUbuntuです

回答:


47

同じ問題が発生しUbuntu 12.04.1 LTS、以下を発行することで解決しました:

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


こんにちは:)私は自分の問題をどのように解決するか忘れました。:)それは半年前でした。
キャッピー

2
とはどうlibcurl4-openssl-dev違いlibssl-devますか?
ガーマン

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をコンパイル
ダニエルW.

動作しますが、すべてのテストケースに失敗します。
ラファエル

「--with-openssl」ディレクティブを使用して、Ubuntu 14.04でPHP5.2を手動でコンパイルします。どうもありがとう。
博士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 /含ん/ opensslの、その中には/ usr / libに

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

引数として渡されたパスは、関連するリソースを見つけるために検索されます。


これは私のために働いた。これは良い解決策です。
ショーンウェルチ

これはdebian wheezy + php 5.3.10の解決策でした!ありがとうございました!!!!
ホルム

@holms:これはかなり古いバージョンのphpです。特に、管理パッケージではなくソースからコンパイルされたパッケージを使用する場合は、最近のリリースを使用する必要があります。
symcbean

これは私にとっての解決策でしphp-7.1.12Debian Jessie。ありがとう
赤穂

10

別の理由で./configure失敗する可能性があるのはpkg-config、PHP7とDebian Jessieの場合のように、インストールしていないためです。

sudo apt-get install pkg-config

2
3年前とは異なる回答で既に指摘されていました。
カスペルド

9

debian 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ページ確認してください。これは、どのパスを配置するかを判断するのに役立ちます。


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

フィードバック:このsslの問題をthsi投稿から解決した後、php 5.3のコンパイルを完全にあきらめました。これは、途中でzend dom拡張でさらに失敗し、いくつかのパッチを見つけて、この大騒ぎをやめることにしました。まだ5.3.10のPHPが搭載されているubuntu 12.04があります。php-fpmに注意して、環境変数をクリアしてください。たとえば、dockerからグローバル変数を渡すことができない場合でも驚かないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.