Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

miércoles, 30 de julio de 2008

Actualizando los plugins de Wordpress

El otro día hablaba sobre la migración del blog entre diferentes versiones de Wordpress, y el problema que había tenido a la hora de importar las entradas (por la función set_time_limit() y ejecutar PHP en modo seguro). Aunque ya pude resolver el problema, en un principio ignorando los errores para importar todas las entradas, y posteriormente mediante el acceso a la configuración del servidor que me proporcionó el proveedor de hosting, no terminó aquí la cosa. Si deseaba actualizar los plugins que estaba usando, podía optar por hacerlo manualmente (descargando la nueva versión del plugin y reemplazando la antigua por esta mediante FTP, procediendo a continuación a configurarlo nuevamente si era preciso), o bien mediante el instalador automático que incorpora Wordpress a tal efecto. Sin embargo, al intentar hacerlo así obtenía un error de permisos:



Downloading update from http://downloads.wordpress.org/plugin/akismet.zip
Unpacking the update
Could not create directory: /xxxxx/yyyyy/wp-content/upgrade/akismet/akismet/
Installation Failed

Sin embargo, esto me extrañó, ya que el usuario asociado a Wordpress tiene los suficientes permisos para subir archivos y crear directorios en el servidor. Investigando un poco, me encontré con un error reconocido para la función mkdir() de las versiones 5.2.3 y 5.2.4 de PHP: no permite crear directorios en modo seguro si la ruta del directorio a crear termina en una barra (slash, "/"). Me dije que no podía deberse a esto... pero sí. Si abrimos el archivo class-wp-filesystem-direct.php (dentro del directorio wp-admin/includes de Wordpress) nos encontraremos con una función mkdir con la siguiente definición:



function mkdir($path,$chmod=false,$chown=false,$chgrp=false)

Esta función mkdir crea un directorio en la ruta especificada dependiendo de los permisos del usuario y grupo que esté intentando llevar a cabo dicha operación. Si al principio del cuerpo de la función comprobamos si estamos en modo seguro, y si es así eliminamos el último carácter de la ruta, si ésta termina en barra...



[php]if(substr($path, -1) == '/' && ini_get('safe_mode')) $path = substr($path, 0, -1);[/php]

Hecho esto, probé a actualizar los plugins y funcionaba correctamente, sin necesidad de desactivar en ningún momento el modo seguro en el servidor.

2 comentarios:

  1. los amp esos estan mal.
    me volvi loco y era eso...

    ResponderEliminar
  2. En efecto, fierita.

    En ocasiones el plugin que uso para colorear el código no es capaz de "escapar" del preprocesamiento que hace Wordpress a los caracteres especiales, que se ven convertidos a su equivalente en HTML. Queda subsanado el error.

    Gracias por la anotación. Un saludo,

    Mith.

    ResponderEliminar