Я провел день, пытаясь выяснить странную проблему. У меня на сайте 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 Library Version 6.6 06-Feb-2006
Версия командной строки возвращает PCRE Library Version => 8.21 2011-12-12
Мне интересно, что делать. Я не очень хорошо разбираюсь в использовании командной строки, поэтому обращаюсь ко всем вам в надежде на помощь.
В статье упоминается "исправление флагов запуска Apache". Я не уверен, что это значит.
Я также нашел комментарий где-то в другом месте: «Хорошо, оказалось, что проблема заключалась в том, что старая версия libpcre зависала в системе и загружалась по ошибке. проблема исправлена. " Я не совсем уверен, как проверить эту информацию на сервере.
==== Редактировать 1 ====
У меня есть больше информации:
/opt/pcre/bin/pcretest -C
Возвращает
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.
==== Редактировать 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
Я посмотрю, что я могу сделать с выполнением этих последних шагов, и скоро обновлю