Estoy profundamente confundido con esto: tengo una instalación de WordPress en un Media Temple GS [uno de los muchos que funcionan bien y están configurados casi exactamente igual] que ocasionalmente me da 404s en todo el sitio. Cuando esto sucede, obtengo 3 errores juntos en mi registro de errores de PHP:
[01-Nov-2013 22:20:50 UTC] PHP Notice: Trying to get property of non-object in /nfs/---/---/mnt/---/domains/---.---/html/wp-includes/post-template.php on line 275
[01-Nov-2013 22:20:50 UTC] PHP Notice: Trying to get property of non-object in /nfs/---/---/mnt/---/domains/---.---/html/wp-includes/post-template.php on line 209
[01-Nov-2013 22:20:50 UTC] PHP Notice: Trying to get property of non-object in /nfs/---/---/mnt/---/domains/---.---/html/wp-includes/post-template.php on line 29
Los dos primeros se relacionan con el $post
objeto y el tercero con esto: get_post()->ID;
lo que creo que es la creación del $post
objeto.
Tengo dos de estos tríos idénticos de mensajes de error con casi exactamente 25 minutos de diferencia [apagado por 2 segundos].
He probado el soporte de MT pero creen que debe ser un error de WP. Estoy ejecutando la última versión de WP pero he experimentado este problema con versiones anteriores.
Tenía 2 complementos habilitados: W3 Total Cache y AJAX Thumbnail Rebuild
He probado con y sin el complemento de caché y el problema persiste. Acabo de deshabilitar el conector de miniatura para ver si hace alguna diferencia.
¡Por favor ayuda, esto me está volviendo loco! [y quería lanzar públicamente este sitio hoy]
EDITAR
También debería haber mencionado que he visto este error en algunas, pero no en todas las otras instalaciones de WordPress en este servidor. Creo, pero no puedo estar 100% seguro, que aquellos que muestran errores son instalaciones más nuevas que las que funcionan bien. Aunque todas las instalaciones están completamente actualizadas.
EDIT2
Solo estoy trabajando en otro proyecto de WP y me di cuenta al menos de lo que significan esos 3 errores. Puedo reproducir exactamente esos tres errores de php yendo a la página de índice de un tipo de publicación personalizada que no existe. Sin embargo, esto no explica por qué eso causaría el 404 en esta pregunta, especialmente porque no solo sucede en páginas de índice de tipo de publicación personalizada. Sin embargo, creo que esto debe estar relacionado con los tipos de publicaciones personalizadas de alguna manera.
Respuestas:
Hay dos tipos de errores 404: generados por WordPress y generados por el servidor.
En algunos entornos de servidor, el servidor puede mostrar incorrectamente los 404 en casos de sobrecarga de la CPU o debido a ciertas instancias de configuración incorrecta, etc. Por lo general, los errores 404 generados por el servidor dirán algo como "Nginx" o "Apache" en la parte inferior del página (depende del tipo de servidor).
En otras situaciones, WordPress (PHP) podría generar errores 404 "falsos positivos" porque los complementos de seguridad están bloqueando el acceso a los recursos cargados:
¿Por qué a veces recibo un error 404 cuando intento actualizar una página con Elementor?
https://wordpress.org/support/topic/getting-false-positive-404-errors-with-newest-update/
Intente deshabilitar cualquier complemento de seguridad, borrar cachés y actualizar la página. Los módulos de seguridad como ModSecurity instalados en su servidor también podrían ser la causa.
También podría ser causado por un tema o complemento mal codificado. Compruebe si hay un tema o complemento común instalado en todos los sitios involucrados. Y si este problema solo ocurre en el alojamiento de Media Temple, es posible que tengan algo mal configurado, o incluso que su servidor esté bajo demasiada carga ...
fuente
No tiene suficiente información para resolver su problema. Intente agregar un seguimiento completo de la pila y solicite información a su registro de errores para investigar un problema.
Puede crear su propio controlador de errores personalizado para agregar el seguimiento de la pila y solicitar información a su registro de errores.
Puede verificar si esto funciona agregando trigger_error en algún lugar de su código, por ejemplo, en el
single.php
archivo.Su registro de errores debería mostrar algo como eso:
Con este tipo de mensaje, será mucho más fácil descubrir dónde está el problema.
fuente