He pasado el día tratando de resolver un problema extraño. Tengo un sitio de WordPress que se está ejecutando en el siguiente error:phpinfo informa incorrecto pcre versión
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
esa línea en wp-includes/shortcodes.php es el siguiente:
$text = preg_replace("/[\x{00a0}\x{200b}]+/u", " ", $text);
me encontré con este artículo que parecía coincidir bastante bien con mi problema: http://labs.sasslantis.ee/2011/05/errors-in-wordpress-after-php-upgrade/
El artículo describe una situación en la que no es diferente de salida de phpinfo();
en Apache y en la línea de comandos con respecto a libpcre
me demostró que este es mi problema mediante la creación de un archivo de prueba con phpinfo();
en ella y también corrió el siguiente de la cáscara: (? Apache)
php -r "phpinfo();"
El guión versión vuelve PCRE Library Version 6.6 06-Feb-2006
La versión de línea de comandos vuelve PCRE Library Version => 8.21 2011-12-12
Me pregunto qué hacer. No estoy muy bien versado en el uso de la línea de comandos, así que me dirijo a todos ustedes esperando alguna ayuda.
El artículo menciona "la fijación de apache start-flags". No estoy seguro de lo que eso significa.
También encontré un comentario en otro lugar que decía: "OK, resultó que el problema era una versión anterior de libpcre dando vueltas en el sistema y cargándose por error. Una vez que actualicé a la última versión de libpcre , problema fijo." No estoy del todo seguro de cómo examinar esta información en el servidor.
==== ==== 1 Editar
He tener más información:
/opt/pcre/bin/pcretest -C
devoluciones
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
Esto no es del todo sorprendente, porque ya sabemos que la línea de comando devuelve la versión correcta. Pero por alguna loca razón desconocida PHP, cuando se ejecuta a través de la web, no devuelve los valores de pcre adecuados.
==== ==== Editar 2
que fue a dar este artículo: http://www.bigboylemonade.com/pcre-version-problem-on-cpanel
Correr pcretest -C
sin la ruta completa devuelve:
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
voy a ver lo que puedo hacer sobre la realización de esos últimos pasos y actualizaré en breve
PHP usará qué PCRE está instalado en su sistema, y Apache no tiene voz en el asunto. Mira el directorio de tu biblioteca (/ var/lib?) Para ver qué versión (s) están allí. –
¿Hay alguna manera de que yo pueda encontrar dónde mirar? Ejecuté 'ldd/usr/bin/php | grep pcre' que me indicó/opt/pcre. Si eso está cerca, ¿acabo de tener uno instalado? –
Eche un vistazo a su archivo httpd.conf (/etc/httpd/conf.d/php.conf) para verificar qué módulo php está utilizando el servidor web. – jap1968