¿Por que WordPress me pide mis Datos de conexión?

Una de las mejores características de WordPress es la capacidad de poder actualizar la versión del sistema y la de instalar y actualizar los plugins desde el panel de control con tan solo unos clicks.

Un problema común de esta característica es cuando WordPress es incapaz de acceder al sistema de archivos directamente, lo que da como resultado una página indicando lo siguiente: “Para realizar la acción solicitada, se requieren los datos de conexión.” (En ingles: “To perform the requested action, connection information is required.”).

Datos de conexión - WordPress

Primero que nada no es problema de WordPress, ni tampoco de la instalación. La razón de esta solicitud es por que, siempre que se usa el panel de control de WordPress para instalar, actualizar o eliminar automáticamente los plugins, WordPress hace cambios a los archivos desde nuestro sistema de archivos interno del servidor.

WordPress antes de realizar cualquier cambio, verifica primero si tiene o no acceso a manipular directamente el sistema de archivos y si WordPress no encuentra los permisos necesarios para modificarlos directamente, es cuando solicita las credenciales FTP para que intente hacer lo que necesita a través de la conexión FTP.

Para entender un poco mejor el por que WordPress no puede escribir en el sistema de archivos, tenemos que echar un vistazo a algunos detalles internos de WordPress.

El siguiente código es del método get_filesystem_method() del archivo wp-admin/includes/file.php:


  if( ! $method && function_exists('getmyuid') && function_exists('fileowner') ){
    if ( !$context )
      $context = WP_CONTENT_DIR;
    $context = trailingslashit($context);
    $temp_file_name = $context . '.write-test-' . time();
    $temp_handle = @fopen($temp_file_name, 'w');
    if ( $temp_handle ) {
      if ( getmyuid() == fileowner($temp_file_name) )
        $method = 'direct';
      @fclose($temp_handle);
      unlink($temp_file_name);
    }
   }

Este código crea un archivo temporal y confirma que el archivo recién creado es del mismo usuario dueño del script que está siendo ejecutado. En el caso de la instalación de plugins, el script que se ejecutara es wp-admin/plugin-install.php. En otras palabras la función requiere saber si el dueño de los archivos es el mismo usuario dueño de la cuenta del hospedaje web.

Durante años hemos estado acostumbrados a usar los permisos CHMOD 777 ó 666, para escribir o modificar algún archivo en nuestro servidor web, y teníamos que hacer prácticamente publico el permiso de escritura, pero al ser un método inseguro esto ha ido cambiando.

No vamos a adentrarnos mucho en los permisos CHMOD (aquí les dejamos un enlace que explica claramente CHMOD), pero básicamente los permisos en un servidor linux se dividen en tres niveles de acceso a los archivos, owner (propietario), group (grupo) y other (otros). Y tres tipos de permiso de acceso, read (lectura), write (escritura) y execute y se representan en texto así: -rwxrwxrwx ó en números así: 777.

Pues bien WordPress nos evita tener que dar permisos tan amplios a nuestros archivos y carpetas en nuestro servidor, ya que solo requiere los permisos en el nivel de acceso “owner“. Y aquí es donde reside el problema, pues para que WordPress pueda funcionar así, es necesario que en nuestro hospedaje web tenga asignado el nombre del “owner” en sus permisos.

La Solución
Para solucionar este problema, tenemos que hacer que los scripts (en este caso WP) sean propiedad del mismo usuario que se ejecuta en Apache de nuestro hospedaje web.

Existen varias formas de hacerlo, si nuestra instalación esta hospedada en nuestro propio servidor dedicado solo tenemos que configurar que nuestro PHP corra con el modulo de Apache SuPHP (mod_suphp).

Si aun no tenemos hospedado nuestro WP o estamos por cambiar de hospedaje, podemos preguntar a nuestro proveedor si lo tienen instalado, la mayoría de las empresas de hosting, utilizan este modulo y ejecutan su instancia de Apache utilizando el nombre de la cuenta del usuario, por lo que los archivos serán propiedad de la misma cuenta y no tendremos problemas.

Si nuestra instalación ya se encuentra en un servidor compartido y este NO tiene SuPHP, pero tenemos acceso a SSH (shell) entonces podemos correr el siguiente comando:


chown -R nombre_de_cuenta_owner carpeta_wordpress/

Este comando (chown) permite modificar a los usuarios o grupos dueños de un archivo o carpeta en el sistema de archivos. De ese modo le decimos al servidor que le asigne “dueño” a nuestro WordPress. De cualquier manera es aconsejable que si no estamos familiarizados con Linux, este método sea realizado por un experto, por lo que lo más aconsejable sería solicitarlo a nuestro proveedor de hospedaje. Hay que recordar que no todas las versiones de Linux y por lo tanto del comando chown son iguales, por lo que siempre es aconsejable ver el manual correspondiente del comando según la versión del OS.