これは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
成功!/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
そして、すべてが素晴らしいようです!
たぶん
ldd/usr/bin/php
phpがpcre共有ライブラリを見つけることを期待している場所を示します。
私の場合、次のコマンドで修正し、実行制限を変更しました。
エコー "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