En algunas instalaciones de WordPress, cuando queremos instalar un plugin o realizar algún otro tipo de ajuste, aparece una pantalla con el mensaje “Para realizar la operación que has solicitado WordPress necesita tener acceso a tu servidor web.“, y un formulario para introducir un usuario y contraseña de acceso FTP.
El motivo de este mensaje es que para realizar la acción que se ha solicitado, WordPress necesita realizar modificaciones al sistema de archivos, pero el usuario que utiliza (el usuario con el que se está ejecutando el servidor web), no tiene los permisos necesarios. En este caso, solicita un un usuario FTP que le permita realizar las modificaciones requeridas.
Estudiando la manera en que WordPress determina si tiene los permisos necesarios, podemos ver que en el fichero wp-admin/includes/file.php hay un método get_filesystem_method() con el siguiente código:
if( function_exists('getmyuid') && function_exists('fileowner') ){
$temp_file = wp_tempnam();
if ( getmyuid() == fileowner($temp_file) )
$method = 'direct';
unlink($temp_file);
}
La función crea un fichero temporal, y comprueba que el usuario con el que se ha creado coincide con el propietario del script que está siendo ejecutado (por ejemplo, si se está intentando instalar un plugin, se ejecuta el script wp-admin/plugin-install.php).
Por lo tanto, la manera de solucionar este problema es asegurarse de que los scripts que necesitan escribir en el sistema de ficheros pertenecen al mismo usuario con el que se está ejecutando Apache.
Muchas compañias de hosting ejecutan la instancia de apache con la misma cuenta del usuario, y en esos casos no se dará el problema que comentamos.
Pero si la compañia de hosting ejecuta apache con un usuario de sistema distinto del usuario de la cuenta, la única opción en principio es utilizar FTP para que WordPress pueda realizar los cambios.
Si la compañia de hosting proporciona acceso como root, o se está utilizando una instalación de WordPress en una servidor de desarrollo en casa o en el trabajo, debería ser posible modificar el propietario de los ficheros de WordPress para permitir el acceso al sistema de ficheros desde el servidor web.
Lo más sencillo es determinar con qué usuario se está ejecutando Apache, y cambiar el propietario de todo el directorio de WordPress par que coincida con dicho usuario. Por ejemplo, en una instalación típica en Linux Debian, el usuario apache es “www-data”, y ejecutaríamos el comando:
# chown -R www-data wordpress
Si no estamos seguros de cuál es el usuario con el que se ejecuta wordpress, podemos utilizar un script de prueba con el siguiente contenido:
<?php echo(exec("whoami")); ?>
—
