phpinfo сообщает о неправильной версии pcre

Я провел день, пытаясь выяснить странную проблему. У меня есть сайт WordPress, на котором обнаружена следующая ошибка:

Warning: preg_replace() [function.preg-replace]: Compilation failed: unknown option bit(s) set at offset -1 in /path/to/public_html/wp-includes/shortcodes.php on line 257

Эта строка в wp-includes / shortcodes.php выглядит следующим образом:

$text = preg_replace("/[\x{00a0}\x{200b}]+/u", " ", $text);

Я нашел эту статью, которая, похоже, довольно хорошо согласуется с моей проблемой: http://labs.sasslantis.ee/2011/05/errors-in-wordpress-after-php-upgrade/

В статье описывается ситуация, в которой имеется другой вывод phpinfo (); в apache и в командной строке в отношении libpcre

Я подтвердил, что это моя проблема, создав тестовый файл с phpinfo (); в нем, а также выполнил следующее из оболочки :

php -r "phpinfo();"

Версия сценария (apache?) Возвращает Версия библиотеки PCRE 6.6, 06 февраля 2006 г. Версия для командной строки возвращает Версия библиотеки PCRE => 8.21 2011-12-12

Мне остается только гадать, что делать. Я не очень хорошо разбираюсь в использовании командной строки, поэтому обращаюсь ко всем вам в надежде на некоторую помощь.

В статье упоминается «исправление стартовых флагов apache». Я не понимаю, что это значит.

Я также нашел где-то еще комментарий: «Хорошо, оказалось, что проблема в старой версии libpcre, зависшей в системе и загружающейся по ошибке. Как только я обновился до последней версии libpcre, проблема решена ". Я не совсем уверен, как проверить эту информацию на сервере.

==== Edit 1 ====

У меня есть дополнительная информация:

/opt/pcre/bin/pcretest -C

Returns

PCRE version 8.21 2011-12-12
Compiled with
UTF-8 support
Unicode properties support
No just-in-time compiler support
Newline sequence is LF
\R matches all Unicode newlines
Internal link size = 2
POSIX malloc threshold = 10
Default match limit = 10000000
Default recursion depth limit = 10000000
Match recursion uses stack

Это не совсем удивительно, потому что мы уже знаем, что командная строка возвращает правильную версию. Но по какой-то безумной неизвестной причине PHP при запуске через Интернет не возвращает правильные значения pcre.

==== Edit 2 ====

Мне подсказали эта статья: http://www.bigboylemonade.com/pcre-version-problem-on-cpanel

Выполняется pcretest -C без возврата полного пути:

PCRE version 6.6 06-Feb-2006
Compiled with
  UTF-8 support
  Unicode properties support
  Newline character is LF
  Internal link size = 2
  POSIX malloc threshold = 10
  Default match limit = 10000000
  Default recursion depth limit = 10000000
  Match recursion uses stack

Я собираюсь посмотреть, что я могу сделать с выполнением этих последних шагов, и вскоре обновлю

9
задан Ivan Novak 17 February 2012 в 06:13
поделиться