web-dev-qa-db-ja.com

CentOSでの共有PCREライブラリの修正

これはPCREに関する問題ではなく、共有ライブラリの更新に関する問題です。私が実行しているCentOSのディストリビューションでは、yumへのバージョン6.6またはそれと類似したバージョンへのアップグレードのみが可能です。

PCREバージョン8.0以降を必要とする課題追跡をインストールしています。 PCREの現在の6.6バージョンをアンインストールすることはできません。ほとんどすべてがPCREに依存しているため、システムが壊れます。

したがって、ソースからPCRE 8.12をコンパイルしてインストールしましたが、pcretest -Cは新しいバージョンを示し、私のテストページでphp_info()を呼び出すと、6.6ライブラリがまだロードされていることが示されます。古いライブラリを新しいライブラリに交換する方法を提案する サイトへのリンク を見つけました。

そうすることで、私は何かが正しくないと思います。いくつかのコマンドが問題を報告しています:

/usr/bin/php: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory

問題を修正するにはどうすればよいですか?共有ライブラリや動的ライブラリにはあまり詳しくありません。次のファイルがあります。

[root@vps tracker]# find / -name libpcre.so* -exec ls -l '{}' \;
lrwxrwxrwx 2 root root 16 Jul 14 07:53 /lib64/libpcre.so.0 -> libpcre.so.0.0.1
lrwxrwxrwx 1 root root 16 Jul 14 07:53 /usr/local/lib/libpcre.so.0 -> libpcre.so.0.0.1
-rwxr-xr-x 1 root root 116790 Jul 14 07:53 /usr/local/lib/libpcre.so.0.0.1
lrwxrwxrwx 2 root root 16 Jul 14 07:53 /usr/local/lib/libpcre.so -> libpcre.so.0.0.1
lrwxrwxrwx 1 root root 16 Jul 14 07:16 /root/pcre-8.12/.libs/libpcre.so.0 -> libpcre.so.0.0.1
-rwxr-xr-x 1 root root 116790 Jul 14 07:16 /root/pcre-8.12/.libs/libpcre.so.0.0.1
lrwxrwxrwx 1 root root 16 Jul 14 07:16 /root/pcre-8.12/.libs/libpcre.so -> libpcre.so.0.0.1
6
Craig Otis

成功!/root/pcre-8.12/に存在しないすべての既存のライブラリを吹き飛ばし、ソースディレクトリから./configure; make; make installを実行しました。

それは適切にインストールされましたそれでもは私に同様のエラーを示しました。私は気づきました:

[root@vps pcre-8.12]# ldd /usr/sbin/httpd
libm.so.6 => /lib64/libm.so.6 (0x00002b3c8a9dd000)
libpcre.so.0 => not found
(bunch of others)

ライブラリは/lib64/にありましたが、ソースインストーラーによって作成された唯一のリンクは次のとおりでした。

/usr/local/lib/libpcre.so.0

したがって、/lib64/にリンクを作成しました。

[root@vps tracker]# link /usr/local/lib/libpcre.so.0.0.1 /lib64/libpcre.so.0

そして、すべてが素晴らしいようです!

4
Craig Otis

たぶん

ldd/usr/bin/php

phpがpcre共有ライブラリを見つけることを期待している場所を示します。

3
user87664

私の場合、次のコマンドで修正し、実行制限を変更しました。

エコー "php-fpm-スタック-1" >>/etc/security/limits.conf

echo "Apache-スタック-1" >>/etc/security/limits.conf

su Apache --Shell/bin/bash --command "ulimit -s"

mkdir -p /etc/systemd/system/php-fpm.service.d

echo [サービス]> /etc/systemd/system/php-fpm.service.d/ulimit.conf

echo LimitSTACK = infinity >>/etc/systemd/system/php-fpm.service.d/ulimit.conf

mkdir -p /etc/systemd/system/nginx.service.d

echo [サービス]> /etc/systemd/system/nginx.service.d/ulimit.conf

echo LimitSTACK = infinity >>/etc/systemd/system/nginx.service.d/ulimit.conf

echo "fs.file-max = 500000" >> /etc/sysctl.conf

systemctl daemon-reload

systemctl restart php-fpm