opensslライブラリを必要とするライブラリ(ZendDebugger.so)があり、それへの参照が見つかりません。
実際にZendDebugger.soがロードされると、エラーログ(私の場合はApache error_logファイル)に次のエラーが表示されます。
Failed loading /usr/lib64/php/7.1/modules/ZendDebugger.so:
libssl.so.1.0.0: cannot open shared object file:
No such file or directory
それからopensslをインストールしようとしています。
sudo yum install openssl
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main | 2.1 kB 00:00:00
amzn-updates | 2.3 kB 00:00:00
Package 1:openssl-1.0.1k-15.99.amzn1.x86_64 already installed and latest version
Nothing to do
カスタムopensslがインストールされているようです(この場合はAmazonバージョン)。だから、次のようなことをしたいかもしれません。
cd /usr/lib64
ln /path/to/amazon/openssl/openssl-1.0.1k-15.99.amzn1.x86_64.so libssl.so
このようにして、ZendDebugger.soで自動的に表示される共有ライブラリを作成します。これは、実行可能ファイルがライブラリを検索するデフォルトのディレクトリの1つである/ usr / lib64に生成されるためです。
ただし、その前にopenssl-1.0.1k-15.99.amzn1.x86_64ファイルのパスを知っておく必要があります。
sudo find / openssl-1.0.1k-15.99.amzn1.x86_64
....
....
find: `openssl-1.0.1k-15.99.amzn1.x86_64': No such file or directory
私は何を見逃していますか? Amazon opensslのパスをどのように見つけますか?それとも別の解決策がありますか?ありがとう
答え1
RPMは常にさまざまな焦点領域に分割されています。通常、名前は次のとおりです。
<pkg>.<arch>
<pkg>-devel.<arch>
<pkg>-libs.<arch>
どこに<pkg>
いるのかopenssl
そして<arch>
ものなのi686
かx86_64
。他のアーキテクチャもありますが、これはAMD / Intelハードウェアで一般的であるため、これについてのみ説明します。
ソフトウェアを構成する実際のツールはopenssl
RPMに含まれていますopenssl.x86_64
。このRPMの名前が上記のパターンとどのように一致するかを確認してください。
このRPMにはライブラリ(.so)があり、openssl-libs.x86_64
このRPMにはヘッダファイル(.h)がありますopenssl-devel.x86_64
。
したがって、問題は、パッケージがコンパイルおよびリンクできるようにライブラリまたはヘッダーファイルを実際にインストールしていないことですopenssl
。
この試み:
$ yum search openssl | grep ^openssl
openssl-devel.i686 : Files for development of applications which will use
openssl-devel.x86_64 : Files for development of applications which will use
openssl-perl.x86_64 : Perl scripts provided with OpenSSL
openssl-pkcs11.x86_64 : A PKCS#11 engine for use with OpenSSL
openssl-static.i686 : Libraries for static linking of applications which will
openssl-static.x86_64 : Libraries for static linking of applications which will
openssl.x86_64 : Utilities from the general purpose cryptography library with
openssl-libs.x86_64 : A general purpose cryptography library with TLS
openssl-libs.i686 : A general purpose cryptography library with TLS
openssl098e.i686 : A compatibility version of a general cryptography and TLS
openssl098e.x86_64 : A compatibility version of a general cryptography and TLS
今インストールしてください:
$ sudo yum install -y openssl-{devel,libs}
インストール後にRPMの内容を確認できますopenssl-libs
。
$ rpm -ql openssl-libs | grep libssl.so
/usr/lib64/.libssl.so.1.0.2k.hmac
/usr/lib64/.libssl.so.10.hmac
/usr/lib64/libssl.so.1.0.2k
/usr/lib64/libssl.so.10
どのRPMをインストールするのかわからない場合はどうすればよいですか?
これは私がいつも見る一般的な質問です。 Fedora / CentOS / RHELなどのRedhatディストリビューションを初めて使用するほとんどの人は、コマンドラインツールをrepoquery
認識しません。このツールを使用すると、リモートYUMリポジトリを照会し、特定のファイルを提供するパッケージを見つけることができます。
したがって、あなたのシナリオでは、次のようになります。
$ repoquery -qf */libssl.so*
openssl-libs-1:1.0.2k-12.el7.x86_64
openssl-devel-1:1.0.2k-12.el7.x86_64
openssl098e-0:0.9.8e-29.el7.centos.3.i686
openssl-libs-1:1.0.2k-12.el7.i686
openssl-devel-1:1.0.2k-12.el7.i686
libssl.so*
このファイルは上記のすべてのRPMに含まれていることがわかります。したがって、既存のRPMによっては、次の2つが必要になる場合があります。
openssl-libs-1:1.0.2k-12.el7.x86_64
openssl-devel-1:1.0.2k-12.el7.x86_64
メモ:私はCentOS 7.xパッケージを示していますが、あなたはCentOSパッケージの独自のブランドであるAmazonのAMIを使用しているので、名前が少し異なりますが、私が示したプロセスは何でも構いません。同じでなければなりません。
答え2
/usr/lib64にlibsslライブラリがあることがわかりました。これはZendDebuggerが期待したもの(libssl.so.1.0.0)とファイル名が異なるだけです。だから正しいファイル名でハードリンクを作成しました。
[ec2-user@ip-172-31-4-60 ~] cd /usr/lib64
[ec2-user@ip-172-31-4-60 lib64] ls -la libssl*
-rwxr-xr-x 1 root root 303520 Jun 22 2017 libssl3.so
lrwxrwxrwx 1 root root 16 Sep 20 2017 libssl.so -> libssl.so.1.0.1k
lrwxrwxrwx 1 root root 16 Aug 13 2017 libssl.so.10 -> libssl.so.1.0.1k
-rwxr-xr-x 2 root root 449616 Feb 28 2017 libssl.so.1.0.1k
[ec2-user@ip-172-31-4-60 lib64] sudo ln libssl.so.1.0.1k libssl.so.1.0.0
今大丈夫!