Problema de WordPress que causa registros de errores masivos

5 minutos de lectura

Tengo un problema que hace que los registros de errores crezcan enormemente cada día.

[Thu Jan 30 08:55:55 2014] [warn] [client 2.102.44.72] mod_fcgid: stderr: PHP Warning: is_dir(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (/var/www/vhosts/inspartnership.org.uk/:/tmp/) in /var/www/vhosts/inspartnership.org.uk/httpdocs/wp-includes/functions.php on line 1366

(Sé que es un registro antiguo, pero el error no ha cambiado).

y esta es la línea ofensiva en WordPress functions.php

$target_parent = dirname( $target );
while ( '.' != $target_parent && ! is_dir( $target_parent ) ) {
    $target_parent = dirname( $target_parent );
}

Ahora el sitio funciona bien (hasta que los registros se vuelven demasiado grandes y luego aparece un error 500), y entiendo lo que está sucediendo para causar el problema: el sitio está en un alojamiento compartido y está tratando de acceder a una carpeta fuera de su alcance. – ¡Simplemente no sé cómo solucionarlo y, para ser honesto, no sé por dónde empezar!

¿Alguien ha encontrado este problema antes y puede indicarme la dirección correcta?

¿Alguien puede ayudarme a identificar qué parte de WordPress podría estar llamando a esta función con la frecuencia suficiente para hacer un registro tan masivo?

Usa palabras simples: estoy siendo un poco torpe 😀

Gracias por adelantado

avatar de usuario
Abhineet Verma

Estás en alojamiento compartido. Por lo tanto, no puede acceder a todo el servidor. Según su registro, estas son rutas permitidas para su sitio web /var/www/vhosts/inspartnership.org.uk/ /tmp/ y usted está tratando de acceder / directorio, por lo tanto, causa que ocurra el problema.

Puede usar estas funciones incorporadas de wordpress para resolver esto por usted.

para temas

http://codex.wordpress.org/Theme_Development#Anatomy_of_a_Theme

Para complementos

Archivos y ubicaciones de complementos

Algunas otras preguntas de referencia

¿Recuperar la ruta del directorio raíz de WordPress?

  • hola abihineet – sí, gracias +1 – Sin embargo, songdogtech en realidad tenía la solución correcta para mi problema particular

    –Graham Ritchie

    4 de julio de 2014 a las 11:46

  • @GrahamRitchie Es bueno escuchar eso. Pregunté porque no aceptaste ninguna de las respuestas. En realidad, deberíamos aceptar una respuesta si la obtuviéramos. 🙂

    – Abhineet Verma

    5 de julio de 2014 a las 6:26

  • Con 2k exp, soy consciente de eso, dulzura: ¡PI simplemente no había estado en SO, ya que al final lo resolví yo mismo! Gracias por el aporte

    –Graham Ritchie

    5 de julio de 2014 a las 9:41

avatar de usuario
markratledge

php open_basedir es una configuración de host; no es un error o un problema con el núcleo de WordPress.

1) Haga que su host cambie php safe_mode apagado. Corriendo safe_mode sobre es inútil

Ver http://www.php.net/manual/en/features.safe-mode.php

2) Obtenga la ruta del directorio tmp del servidor web. Edite el archivo wp-config.php y agregue esta línea:

define('WP_TEMP_DIR','../../relative/path/to/tmp');

3) Encuentra un nuevo anfitrión.

Obviamente, la ruta base de $target está “por debajo” de la ruta base permitida para el usuario que ejecuta la instancia de php. Según el archivo de registro, las rutas permitidas son “/tmp/” y “/var/www/vhosts/inspartnership.org.uk/”. Supongo que falta alguna configuración en su instalación de WP. Lo más probable es que sea solo la ubicación de los archivos temporales. ¿Moviste tu sitio recientemente a otro servidor? Solo eche un vistazo a la configuración en “wp-config.php” si aún coinciden con las ubicaciones de su entorno de servidor actual.

avatar de usuario
franco martín

Esto puede suceder cuando la ruta de carga se ha cambiado a un directorio fuera del directorio de inicio de su sitio web, lo he visto varias veces; generalmente cuando las personas han agregado una barra al comienzo de la ruta. Es posible que dicha configuración no cause ningún problema hasta que se cambie la ruta del directorio de inicio en la cuenta de alojamiento, como cuando se migra el sitio o cuando el servicio de alojamiento cambia la ruta.

Puede crear enormes archivos de registro que a veces agotan el espacio en disco en todo el servidor, lo que hace que falle más de un sitio web.

La opción upload_path se puede encontrar en Configuración -> Medios bajo la etiqueta “Almacenar cargas en esta carpeta”. Nota: a partir de la versión 3.5, la opción está oculta a menos que ya tenga una ruta no predeterminada (cualquier otra que no sea wp-content/uploads).

Si por alguna razón no puede acceder al administrador de WordPress pero tiene acceso a la base de datos, simplemente elimine el valor de upload_path en la tabla wp_options.

Puede encontrar la fila en phpMyAdmin con la consulta:

SELECT * FROM `wp_options` where option_name="upload_path"

Desde allí, puede hacer clic en el campo option_value y editarlo, luego simplemente haga clic fuera del campo para guardar el cambio.

captura de pantalla de phpMyAdmin

Es posible que ya haya resuelto el problema, pero para referencia futura, quería agregar esto aquí, ya que ninguna de las soluciones sugeridas funcionó para mí.

Estaba experimentando este mismo aumento de error_log, consumiendo casi instantáneamente todo el espacio del disco en mi VPS.

Tomó un poco de tiempo encontrar la fuente del problema, ya que no ocurría todo el tiempo. En mi caso, no fue un problema de safe_mode, ni de actualizar wp-config para establecer un directorio temporal: el problema fue que el sitio de WordPress era originalmente un sitio de blogger, luego migró a WordPress. Algunas de las publicaciones tenían filas wp_postmeta que aún se referían al sitio de Blogger… Estas filas contenían rutas que nosotros (obviamente) estábamos fuera de las rutas permitidas. La eliminación de las filas wp_postmeta para las publicaciones que activaron los errores de ‘restricción open_basedir en efecto’ resolvió el problema y no he visto el error desde entonces.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad