修复 CentOS 上的共享 PCRE 库

修复 CentOS 上的共享 PCRE 库

这不是一个关于 PCRE 的问题,而是一个关于更新共享库的问题。我运行的 CentOS 发行版只允许yum升级到版本 6.6 或类似版本。

我正在安装需要 PCRE 8.0 以上版本的问题跟踪器。我无法卸载当前 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

答案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

一切看上去都很棒!

答案2

也许

ldd /usr/bin/php

将显示 php 期望在哪里找到 pcre 共享库。

答案3

就我而言,我使用以下命令修复了它,并改变了执行限制:

回显“php-fpm-stack-1”>>/etc/security/limits.conf

回显“ apache-stack-1” >>/etc/security/limits.conf

su apache--shell /bin/bash--命令“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

回显“fs.file-max=500000”>> /etc/sysctl.conf

systemctl 守护进程重新加载

systemctl 重启 php-fpm

相关内容