Aviso: Constante ya definida en wp-config.php en línea (inexistente)?

22 feb 2017, 14:29:58
Vistas: 29K
Votos: 1

Me han asignado la tarea de mover un sitio web a un nuevo dominio, y me he encontrado con este extraño problema.
En la página de inicio, siempre veo esto:

Notice: Constant AUTOSAVE_INTERVAL already defined in /home/gturnat/public_html/wp-config.php on line 99

Notice: Constant WP_POST_REVISIONS already defined in /home/gturnat/public_html/wp-config.php on line 100


Lo que he intentado:

  • Notice: Constant WP_POST_REVISIONS already defined sugiere comentar las constantes en default-constants.php, pero no funciona.
  • Configurar display_errors a 0, '0' o 'Off' no hace nada.
  • Ejecutar error_reporting(0) aún muestra los errores.
  • Crear un mu-plugin (Como se sugiere en ¿Cómo puedo evitar que aparezcan los avisos de PHP en WordPress?).
    No pasa nada y el plugin ni siquiera se carga.
    Los errores siguen apareciendo.
  • Intenté comentar las líneas en wp-config.php, pero no funcionó. Los avisos siguen ahí.
  • Eliminé las líneas completamente y las moví por wp-config.php, pero las advertencias insisten en que está en las líneas 99 y 100.
    Causar un error de sintaxis dentro de wp-config.php genera un error registrado, lo que significa que el archivo no está en caché.
  • Intenté habilitar y deshabilitar el modo de depuración, establecer display_errors a false, 0, '0' y 'Off', pero no funciona.
  • Ejecuté grep -1R WP_POST_REVISIONS * y grep -1R AUTOSAVE_INTERVAL * con el siguiente resultado:

    root@webtest:# grep -lR WP_POST_REVISIONS *
    wp-config.php
    wp-includes/default-constants.php
    wp-includes/revision.php
    root@webtest:# grep -lR AUTOSAVE_INTERVAL *
    wp-config.php
    wp-includes/script-loader.php
    wp-includes/default-constants.php
    wp-includes/class-wp-customize-manager.php

Realmente no tengo ninguna otra idea para probar.


Estoy usando WordPress 4.7.2, ejecutándose en PHP 5.4 con los siguientes módulos cargados:

Módulos PHP cargados

No hay op-cache funcionando en el servidor. Solo esas opciones.

PHP fue configurado con las siguientes opciones:

'./configure' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/opt/alt/php54' '--exec-prefix=/opt/alt/php54' '--bindir=/opt/alt/php54/usr/bin' '--sbindir=/opt/alt/php54/usr/sbin' '--sysconfdir=/opt/alt/php54/etc' '--datadir=/opt/alt/php54/usr/share' '--includedir=/opt/alt/php54/usr/include' '--libdir=/opt/alt/php54/usr/lib64' '--libexecdir=/opt/alt/php54/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/opt/alt/php54/usr/share/man' '--infodir=/opt/alt/php54/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/opt/alt/php54/etc' '--with-config-file-scan-dir=/opt/alt/php54/link/conf' '--with-exec-dir=/usr/bin' '--with-layout=GNU' '--disable-debug' '--disable-rpath' '--without-pear' '--without-gdbm' '--with-pic' '--with-zlib' '--with-bz2' '--with-gettext' '--with-gmp' '--with-iconv' '--with-openssl' '--with-kerberos' '--with-mhash' '--with-readline' '--with-pcre-regex=/opt/alt/pcre/usr' '--with-libxml-dir=/opt/alt/libxml2/usr' '--with-curl=/opt/alt/curlssl/usr' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-shmop' '--enable-calendar' '--enable-xml' '--enable-force-cgi-redirect' '--enable-fastcgi' '--enable-pcntl' '--enable-bcmath=shared' '--enable-dba=shared' '--with-db4=/usr' '--enable-dbx=shared,/usr' '--enable-dom=shared' '--enable-fileinfo=shared' '--enable-intl=shared' '--enable-json=shared' '--enable-mbstring=shared' '--enable-mbregex' '--enable-pdo=shared' '--enable-phar=shared' '--enable-posix=shared' '--enable-soap=shared' '--enable-sockets=shared' '--enable-sqlite3=shared,/opt/alt/sqlite/usr' '--enable-sysvsem=shared' '--enable-sysvshm=shared' '--enable-sysvmsg=shared' '--enable-wddx=shared' '--enable-xmlreader=shared' '--enable-xmlwriter=shared' '--enable-zip=shared' '--with-gd=shared' '--enable-gd-native-ttf' '--with-jpeg-dir=/usr' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--with-t1lib=/opt/alt/t1lib/usr' '--with-imap=shared' '--with-imap-ssl' '--with-xmlrpc=shared' '--with-ldap=shared' '--with-ldap-sasl' '--with-pgsql=shared' '--with-snmp=shared,/usr' '--enable-ucd-snmp-hack' '--with-xsl=shared,/usr' '--with-pdo-odbc=shared,unixODBC,/usr' '--with-pdo-pgsql=shared,/usr' '--with-pdo-sqlite=shared,/opt/alt/sqlite/usr' '--with-mssql=shared,/opt/alt/freetds/usr' '--with-interbase=shared,/usr' '--with-pdo-firebird=shared,/usr' '--with-pdo-dblib=shared,/opt/alt/freetds/usr' '--with-mcrypt=shared,/usr' '--with-tidy=shared,/usr' '--with-recode=shared,/usr' '--with-enchant=shared,/usr' '--with-pspell=shared' '--with-unixODBC=shared,/usr' '--with-icu-dir=/opt/alt/libicu/usr' '--with-sybase-ct=shared,/opt/alt/freetds/usr'

Como punto de prueba, intenté ejecutarlo en PHP 5.6, con los mismos resultados, con los siguientes módulos:

Módulos PHP 5.6

4
Comentarios

Quizás el error estuvo ahí todo el tiempo en el servidor/dominio anterior -- pero el nivel de reporte de errores de PHP está configurado diferente ahora en el nuevo servidor. A veces tienes que decidir si vas a luchar contra él o enterrarlo... al menos para que el sitio funcione y puedas continuar depurando en otro lugar.

C C C C
22 feb 2017 15:04:05

@CC Honestamente, solo quiero enterrarlo. Puedo buscar a fondo, pero no tengo idea de dónde buscar.

Ismael Miguel Ismael Miguel
22 feb 2017 17:13:21

Haz una búsqueda find in files en todo el directorio por AUTOSAVE_INTERVAL, obviamente algo más lo está definiendo. También, comenta una constante esencial como DB_NAME, para ver si el sitio sigue funcionando. Es posible que estés modificando el archivo wp-config.php incorrecto.

Fayaz Fayaz
22 feb 2017 18:52:18

@Fayaz Muy adelantado a ti. La búsqueda "encontrar en archivos" ya estaba hecha (último punto en la lista) e incluso ejecuté find ./ | grep wp-config y solo hay 2. El otro es el ejemplo. Incluso he rastreado los archivos, desde el index.php hasta el wp-config.php.

Ismael Miguel Ismael Miguel
22 feb 2017 19:22:38
Todas las respuestas a la pregunta 2
7

Si no tienes ningún plugin que manipule esas definiciones, lo más probable es que se deba a tener las dos constantes definidas debajo de la línea en el archivo config.php que dice:

/* ¡Eso es todo, deja de editar! Feliz blogging. */

Los números de línea relativamente altos respaldan esta idea.

22 feb 2017 15:46:12
Comentarios

No lo son. También lo intenté. Están en las líneas 90 y 91. Pero de alguna manera la advertencia está en las líneas 99 y 100.

Ismael Miguel Ismael Miguel
22 feb 2017 16:32:34

entonces lo más probable es que no estés viendo el wp-config correcto

Mark Kaplun Mark Kaplun
22 feb 2017 17:02:02

... y mi wp-config casi virgen de la versión 4.7 termina en la línea 89, así que incluso la 90 suena incorrecta

Mark Kaplun Mark Kaplun
22 feb 2017 17:04:15

Puedes ver mi archivo en http://pastebin.com/HZhENpMu (en mi defensa, no sabía que tenía 100 líneas). Las líneas 90 y 91 están comentadas, como puedes ver.

Ismael Miguel Ismael Miguel
22 feb 2017 17:37:43

eso se ve bien, lo que nos devuelve a la opción de que este no es el archivo correcto para mirar. ¿Estás seguro de que no hay, por ejemplo, un wp-config en el directorio superior? Una forma simple de verificarlo es agregar un die o introducir un error de sintaxis en el archivo que estás viendo ahora

Mark Kaplun Mark Kaplun
22 feb 2017 18:58:32

Ya intenté eso. Ese es el punto 6. Sí lleva a una página en blanco cuando escribo cosas aleatorias dentro del archivo.

Ismael Miguel Ismael Miguel
22 feb 2017 19:18:47

Solo para limpiar un poco mi insensatez, edité la tercera línea para que quedara define('WP_MEMORY_LIMIT', '512M');die(WP_MEMORY_LIMIT);, y mostró 512M como se esperaba.

Ismael Miguel Ismael Miguel
22 feb 2017 19:34:13
Mostrar los 2 comentarios restantes
8

tl;dr: ¡Borra tu caché (Comet Cache)!


Respuesta larga:

Solo tengo 2 palabras: Comet Cache!

Comet Cache estaba activado.
Al revisar el código fuente encontré una nota como esta, después del cierre </html>:

<!-- *´¨)
     ¸.•´¸.•*´¨) ¸.•*¨)
     (¸.•´ (¸.•` ¤ Notas de Comet Cache ¤ ´¨) -->

<!-- Versión Salt del Archivo de Caché:       n/a -->

<!-- URL del Archivo de Caché:                http://<my-domain> -->
<!-- Ruta del Archivo de Caché:               /cache/comet-cache/cache/http/<my-domain>/index.html -->

<!-- Archivo de Caché Generado Mediante:      Solicitud HTTP -->
<!-- Archivo de Caché Generado El:           22 de Feb, 2017 @ 5:37 pm UTC -->
<!-- Archivo de Caché Generado En:            4.59149 segundos -->

<!-- Archivo de Caché Expira El:             1 de Mar, 2017 @ 5:37 pm UTC -->
<!-- Archivo de Caché Se Reconstruye El:     1 de Mar, 2017 @ 5:37 pm UTC -->

<!-- *´¨)
     ¸.•´¸.•*´¨) ¸.•*¨)
     (¸.•´ (¸.•` ¤ Comet Cache está Funcionando Correctamente ¤ ´¨) -->

<!-- Cargado desde Caché El:          22 de Feb, 2017 @ 5:37 pm UTC -->
<!-- Cargado desde Caché En:          0.03472 segundos -->

Borrar manualmente /cache/comet-cache/cache/http/<my-domain>/index.html (ruta relativa a tu directorio /wp-content/) resolvió el problema.


Me siento tan tonto por asumir que no había caché involucrada. ¡Siempre culpa al caché!

22 feb 2017 19:45:24
Comentarios

Ja ja, sí, si pasa algo tan extraño que no tiene explicación alguna, 99 de cada 100 veces es algún tipo de caché :)

Fayaz Fayaz
22 feb 2017 19:54:24

@Fayaz Lección aprendida. Solo perdí alrededor de 9 horas con esto :/ Realmente asumí que no había ningún tipo de caché en funcionamiento, ya que a veces las cosas cambiaban... Bueno, mejor suerte para mí la próxima vez.

Ismael Miguel Ismael Miguel
22 feb 2017 20:19:54

jaja ni siquiera pensé en la caché

Mark Kaplun Mark Kaplun
22 feb 2017 21:19:00

@MarkKaplun Yo tampoco. O sea, busqué del lado de PHP, pero era del lado de Wordpress donde estaba el caching :/

Ismael Miguel Ismael Miguel
22 feb 2017 21:55:32

Espero que hayas aprendido la lección: Los plugins no deberían manejar el caching, los servidores deberían hacerlo ;) Mejor aprende a configurar un servidor para esa tarea, que poner una aplicación encima. Bonus: Obtienes más control y mucho más poder de caché, ya que las solicitudes que están disponibles en caché nunca llegan a tu servidor de aplicaciones PHP FPM o FCGI.

kaiser kaiser
6 mar 2017 00:42:15

@kaiser Tienes razón. Debería buscar un ejemplo de .htaccess sobre esto. Leí un poco pero no estoy del todo contento con implementarlo yo mismo, ya que no sé casi nada sobre Wordpress.

Ismael Miguel Ismael Miguel
6 mar 2017 12:58:30

El almacenamiento en caché no tiene nada que ver con WordPress (ni con el acceso de usuarios como lo hace .htaccess para el servidor web Apache) o con tu servidor.

kaiser kaiser
6 mar 2017 15:41:37

Ahora estoy súper confundido...

Ismael Miguel Ismael Miguel
6 mar 2017 16:06:59
Mostrar los 3 comentarios restantes