
FS_METHOD es una constante de WordPress que indica cómo debe acceder el CMS a los archivos cuando instala, actualiza o modifica componentes. Normalmente no tienes que tocarla: WordPress comprueba qué transporte puede usar y elige el que encaja con los permisos del servidor. Solo merece la pena fijarla cuando aparecen errores de actualización, problemas de propiedad de archivos o una configuración de alojamiento poco habitual.
Esta guía sustituye el enfoque antiguo de copiar credenciales FTP sin más. En la mayoría de instalaciones actuales conviene corregir primero los permisos y la propiedad de los archivos. Si eso no basta, entonces puedes elegir el método adecuado en wp-config.php, siempre con una copia de seguridad y sin guardar contraseñas en un repositorio público.
direct, ssh2, ftpext y ftpsockets.WordPress utiliza su Filesystem API para abstraer la lectura, escritura, modificación y eliminación de archivos. La función get_filesystem_method() comprueba el entorno y devuelve el transporte que puede utilizar. El orden documentado es direct, ssh2, ftpext y ftpsockets, aunque el resultado depende de los permisos, las extensiones de PHP y la configuración del alojamiento.
Por eso un aviso como «No se pudo crear el directorio» o una pantalla que pide credenciales FTP no significa automáticamente que debas añadir FS_METHOD. Puede haber un propietario incorrecto, permisos demasiado restrictivos, una ruta equivocada o una extensión que falta. Consulta primero el registro del servidor y el estado de la carpeta wp-content.
| Valor | Cuándo se utiliza | Qué necesita |
|---|---|---|
direct | PHP puede escribir directamente en los archivos. | Propiedad y permisos correctos en el servidor. |
ssh2 | La conexión se hace mediante SSH. | Extensión SSH2 y datos de conexión o claves. |
ftpext | Se usa la extensión FTP de PHP. | Extensión FTP y credenciales FTP. |
ftpsockets | Se conecta mediante la clase de sockets de PHP. | Acceso FTP y soporte para sockets. |
Si necesitas probar un método concreto, coloca la constante en wp-config.php, antes de la línea que indica que dejes de editar el archivo. El ejemplo mínimo sería:
define( 'FS_METHOD', 'direct' );
Sustituye direct por ssh2, ftpext o ftpsockets según tu servidor. Haz una sola prueba cada vez y vuelve a dejar que WordPress elija el transporte si el cambio no resuelve el error. La documentación oficial recomienda definir el menor número posible de constantes de actualización y cambiar FS_METHOD solo cuando haya problemas.
direct es el método más sencillo cuando el proceso PHP pertenece al mismo usuario que los archivos de WordPress o tiene permisos de escritura controlados. No es malo por sí mismo ni conviene presentarlo como un riesgo automático: el problema aparece cuando el servidor permite escribir más de lo necesario o cuando los archivos tienen una propiedad incoherente.
Si WordPress solicita credenciales en cada actualización, revisa primero el propietario y el grupo de los archivos, la ruta real de la instalación y las reglas del alojamiento. Cambiar a direct puede ocultar el problema de permisos y dejar una configuración difícil de mantener.
ssh2 tiene sentido cuando tu alojamiento ofrece acceso SSH y la extensión correspondiente está disponible para la versión de PHP que usa la web. También puedes autenticarte mediante claves, una opción preferible a escribir una contraseña en el archivo de configuración. Si el proveedor solo ofrece FTP, ftpext y ftpsockets son los transportes previstos por WordPress.
FTP mediante SSL se configura con FTP_SSL, pero no convierte la conexión en SFTP. SFTP utiliza SSH y se relaciona con el transporte ssh2. Confundir ambos protocolos suele terminar en credenciales correctas que no funcionan porque se está usando el puerto o el método equivocado.
Cuando el método necesita conexión, WordPress admite constantes como FTP_HOST, FTP_USER, FTP_PASS, FTP_SSL, FTP_BASE, FTP_CONTENT_DIR y FTP_PLUGIN_DIR. Un ejemplo orientativo sería:
define( 'FS_METHOD', 'ftpext' );
define( 'FTP_HOST', 'ftp.example.org' );
define( 'FTP_USER', 'usuario-ftp' );
define( 'FTP_PASS', 'contraseña-solo-como-ejemplo' );
define( 'FTP_BASE', '/ruta/a/wordpress/' );
define( 'FTP_SSL', true );
No copies este bloque sin adaptarlo. La ruta y el puerto dependen del proveedor. Además, evita subir wp-config.php a GitHub, enviarlo por correo o reutilizar la misma contraseña en otros servicios. Si ya has expuesto una contraseña real, cámbiala desde el panel del alojamiento.
Para claves SSH existen FTP_PUBKEY y FTP_PRIKEY. Deben apuntar a las rutas correctas y el usuario del servidor tiene que poder leerlas. El equipo que administra el alojamiento puede confirmar si la extensión SSH2 está activa y qué transporte soporta.
wp-config.php. Puedes revisar nuestra guía de copias con Duplicator.wp-content y de las carpetas que WordPress intenta modificar.Si el sitio muestra errores de escritura después de un cambio, no amplíes los permisos a todo el servidor para salir del paso. Es más seguro pedir al proveedor una configuración de propiedad coherente y mantener actualizados WordPress, PHP y los plugins. La guía de requisitos de WordPress y PHP ayuda a comprobar esa parte.
¿Tengo que definir siempre FS_METHOD?
No. Si las actualizaciones funcionan, deja que WordPress elija el transporte automáticamente.
¿Qué valor debo usar?
Depende del servidor. direct suele ser suficiente cuando PHP puede escribir con permisos correctos; ssh2, ftpext y ftpsockets requieren sus transportes y credenciales correspondientes.
¿Es más seguro usar FTP que direct?
No hay una respuesta universal. La seguridad depende de la propiedad de los archivos, los permisos, el protocolo y la configuración del servidor. Forzar FTP no arregla por sí solo una instalación mal configurada.
¿FTP_SSL es lo mismo que SFTP?
No. FTP_SSL protege una conexión FTP mediante SSL, mientras que SFTP funciona sobre SSH y se relaciona con el transporte ssh2.
¿Puedo guardar la contraseña FTP en wp-config.php?
WordPress admite FTP_PASS, pero debes proteger el archivo y evitar que llegue a repositorios o copias compartidas. Siempre que sea posible, usa claves SSH o las credenciales temporales del panel del proveedor.
Fuentes: get_filesystem_method(); edición de wp-config.php; Filesystem API de WordPress.
