Исправление общей библиотеки PCRE в CentOS

Это не вопрос 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

2 ответа

Решение

Успех! Я сдул существующие библиотеки, все, что не было в /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.

В моем случае я исправил это с помощью следующей команды, изменив пределы выполнения:

echo "php-fpm - stack -1" >> / etc / security / limits.conf

echo "apache - stack -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

эхо LimitSTACK= бесконечность >> / 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

эхо LimitSTACK= бесконечность >> / etc / systemd / system / nginx.service.d / ulimit.conf

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

systemctl демон-перезагрузка

systemctl перезапустить php-fpm

Другие вопросы по тегам