Не запускается Apache Undefined symbol «pcre_info» в FreeBSD

Если вы что то накрутили/обновили/поломали в системе может получится так что некоторый софт перестанет запускаться, в данном случае рассмотрим веб сервер apache.

Типичная ошибка при запуске /usr/local/etc/rc.d/apache22

serv# /usr/local/etc/rc.d/apache22 start
Performing sanity check on apache22 configuration:
/libexec/ld-elf.so.1: /usr/local/sbin/httpd: Undefined symbol "pcre_info"
Starting apache22.
/libexec/ld-elf.so.1: /usr/local/sbin/httpd: Undefined symbol "pcre_info"
/usr/local/etc/rc.d/apache22: WARNING: failed to start apache22

Undefined symbol «pcre_info» так же может выдавать Shared object «libpcre.so.0» not found

Такое может возникнуть из за обновления какой то либы (библиотеки), в моем случае pcre до последней версии, там что то поменялось и apache отказывается стартовать, решение простое это первое что приходит в голову — пересобрать apache со всеми зависимости в том числе с php.

Читайте также:  Часть 3: PostfixAdmin – Настройка виртуальных почтовых ящиков на почтовом сервере Debian 11/10

Еще как вариант можно взять старые исходники и скомпилировать нужную вам библиотеку, после скормить — переименовать в libpcre.so.0.

Я просто пересобрал нужный мне софт и все завелось, наличие php можно посмотреть так

pkg_info | grep php5
php52-5.2.17_4 PHP Scripting Language
php52-bz2-5.2.17_4 The bz2 shared extension for php
php52-ctype-5.2.17_4 The ctype shared extension for php
php52-curl-5.2.17_4 The curl shared extension for php
php52-extensions-1.3_1 A "meta-port" to install PHP extensions
php52-filter-5.2.17_4 The filter shared extension for php
php52-gd-5.2.17_4 The gd shared extension for php
php52-gettext-5.2.17_4 The gettext shared extension for php
php52-imap-5.2.17_4 The imap shared extension for php
php52-json-5.2.17_4 The json shared extension for php
php52-mbstring-5.2.17_4 The mbstring shared extension for php
php52-mcrypt-5.2.17_4 The mcrypt shared extension for php
php52-mhash-5.2.17_4 The mhash shared extension for php
php52-mysql-5.2.17_4 The mysql shared extension for php
php52-openssl-5.2.17_4 The openssl shared extension for php
php52-pcre-5.2.17_4 The pcre shared extension for php
php52-pdo-5.2.17_4 The pdo shared extension for php
php52-pdo_mysql-5.2.17_4 The pdo_mysql shared extension for php
php52-pgsql-5.2.17_4 The pgsql shared extension for php
php52-posix-5.2.17_4 The posix shared extension for php
php52-session-5.2.17_4 The session shared extension for php
php52-simplexml-5.2.17_4 The simplexml shared extension for php
php52-spl-5.2.17_4 The spl shared extension for php
php52-xml-5.2.17_4 The xml shared extension for php
php52-zip-5.2.17_4 The zip shared extension for php
php52-zlib-5.2.17_4 The zlib shared extension for php

запомнили, далее удалить все сразу можно так

Читайте также:  Как отключить пингбэки и трекбэки в WordPress

pkg_info | grep php5 | awk '{print $1}' | xargs pkg_delete -f

так же мне пришлось удалить

pkg_delete phpMyAdmin-3.4.8 phppgadmin-5.0.3 squirrelmail-1.4.22 xcache-1.3.2 ZendOptimizer-3.3.0.a ap22-mod_rpaf2-0.6_2

теперь можно удалить сам апач

cd /usr/ports/www/apache22-itk-mpm/
make deinstall

собираем все как было

cd /usr/ports/www/apache22-itk-mpm
make install clean
cd /usr/ports/lang/php52
make config
make install clean
cd /usr/ports/www/mod_rpaf2
make install clean
cd /usr/ports/databases/phpmyadmin
make install clean

все остальное аналогично, ищите в портах

cd /usr/ports ; make search name=имя порта

и ставите

cd /usr/ports/путь && make install clean

После чего радуемся apache22 который начал стартовать без каких либо проблем, перед манипуляциями рекомендую делать бэкапы конфигов /usr/local/etc/apache22/httpd.conf и так далее.