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...
Hecho esto, probé a actualizar los plugins y funcionaba correctamente, sin necesidad de desactivar en ningún momento el modo seguro en el servidor.
Entradas relacionadas:
Etiquetas: blogs, php, Programación


