¿Puedo instalar / actualizar complementos de WordPress sin proporcionar acceso FTP?

Estoy utilizando WordPress en mi servidor en vivo que solo usa SFTP utilizando un SSH clave.

Quiero instalar y actualizar complementos, pero parece que debe ingresar su nombre de usuario FTP para instalar los complementos. ¿Hay alguna forma de instalar y actualizar complementos cargando manualmente los archivos en lugar de que WordPress maneje todo el proceso?

preguntado el 12 de marzo de 09 a las 18:03

Sí tu puedes. Simplemente usando cPanel o cualquier otra herramienta de carga de archivos que tenga; cargue el complemento comprimido y extráigalo en wp-content/plugins/ luego, desde el tablero de wp, vaya a la pestaña de complementos y habilítelo. -

Si usa una VPS, debería intentar esto: stackoverflow.com/a/44137965/3160597 -

@WPDev Si su comentario aparece como una respuesta, lo votaría nuevamente, eso fue lo más útil. -

youtu.be/pq4QRp4427c Esto debería funcionar. -

30 Respuestas

WordPress solo le pedirá la información de su conexión FTP mientras intenta instalar complementos o una actualización de WordPress si no puede escribir en /wp-content directamente. De lo contrario, si su servidor web tiene acceso de escritura a los archivos necesarios, se encargará de las actualizaciones y la instalación automáticamente. Este método no requiere que tenga acceso FTP / SFTP o SSH, pero sí requiere que tenga configurados permisos de archivo específicos en su servidor web.

Probará varios métodos en orden y recurrirá a FTP si los métodos Direct y SSH no están disponibles.

https://github.com/WordPress/WordPress/blob/4.2.2/wp-admin/includes/file.php#L912

WordPress intentará escribir un archivo temporal en su /wp-content directorio. Si esto tiene éxito, compara la propiedad del archivo con su propio uid, y si hay una coincidencia, le permitirá usar el método 'directo' para instalar complementos, temas o actualizaciones.

Ahora, si por alguna razón no desea confiar en la verificación automática de qué método de sistema de archivos usar, puede definir una constante, 'FS_METHOD' en tu wp-config.php archivo, eso es 'direct', 'ssh', 'ftpext' or 'ftpsockets' y utilizará ese método. Tenga en cuenta que si establece esto en 'directo', pero su usuario web (el nombre de usuario con el que se ejecuta su servidor web) no tiene los permisos de escritura adecuados, recibirá un error.

En resumen, si no desea (o no puede) cambiar los permisos en wp-content para que su servidor web tenga permisos de escritura, agregue esto a su archivo wp-config.php:

define('FS_METHOD', 'direct');

Permisos explicados aquí:

Respondido el 02 de junio de 15 a las 18:06

Tuve que hacer: sudo chown -R www-data wp-content además de otorgar permisos de escritura - mikermcneil

El uso de getmyuid en la línea 876 es posiblemente incorrecto aquí, ya que devuelve el UID del propietario del script, no el ejecutor del script. Creo que debería ser posix_getuid. - cmbuckley

¿Cuáles son las implicaciones de seguridad de este enfoque? - Jahmic

Si desea ver bajo qué usuario se está ejecutando php, puede usar esto: print_r(posix_getpwuid(posix_geteuid())); Puede agregar el código en el wp-config expediente. - Ivan v.

chown -R www-data wordpress/wp-content no funcionó para mí, pero chown -R www-data wordpress hizo - Martin

Como se dijo antes, ninguno de los arreglos permanentes ya funciona. Necesita cambiar las permanentes en consecuencia Y poner lo siguiente en su wp-config.php:

define('FS_METHOD', 'direct');

Respondido 22 Feb 12, 19:02

Aunque tenía los permisos correctos para que el servidor web pudiera escribir en el directorio de complementos y en el directorio de contenido de wp, esta configuración lo solucionó para que el administrador no solicitara la configuración de FTP / SFTP para actualizar los complementos. Gracias. Funcionó perfectamente. - Sean McCleary

Tuve que hacer esto explícitamente también. - julien_c

¿Cuándo hicieron que esto fuera un requisito? - danjp

También tuve que confiar en esta configuración, en el WP instalado por el paquete debian en Ubuntu 12.04. De lo contrario, los permisos estaban bien, wp-content tiene permiso rwx para el grupo www-data ... - alce

Mire para asegurarse de que lo siguiente no esté ya en el archivo wp-config.php: define ('FS_METHOD', 'ftpext'); En este caso, colocando define ('FS_METHOD', 'direct'); en la parte inferior del archivo no funcionará. Tendrá que borrar o comentar el define ('FS_METHOD', 'ftpext'); Es muy probable que esto suceda si ha migrado desde otro servidor que requiera FTP. - Doug

Solo quería agregar que NUNCA debe configurar el wp-content permiso o permiso de cualquier carpeta para 777.

Esto es lo que tuve que hacer para:

1) Establecí la propiedad de la carpeta de wordpress (recursivamente) para el usuario de apache, así:

# chown -R apache wordpress/

2) Cambié la propiedad del grupo de la carpeta de wordpress (recursivamente) al grupo de apache, así:

# chgrp -R apache wordpress/

3) otorgue al propietario pleno privilegio sobre el directorio, así:

# chmod u+wrx wordpress/*

Y eso hizo el trabajo. Mi wp-content carpeta tiene 755 permisos, por cierto.

TL; versión DR:

# chown -R apache:apache wordpress
# chmod u+wrx wordpress/*

respondido 21 nov., 19:18

configurar su wordpress como propiedad de apache es tan malo como configurar 777. El resultado es el mismo: cualquier script php ahora puede alterar sus archivos de wordpress. La mejor opción es usar apache: apache temporalmente, instalar sus actualizaciones y volver al original O usar el truco ssh / ftp aflicción

Estoy en desacuerdo. No es exactamente lo mismo que establecerlo en 777. Cualquier usuario de la máquina tendría acceso de escritura si establece los permisos en 777. Eso es un problema en sí mismo. y si bien tiene razón, que Apache puede alterar los archivos php ahora, esa sería la intención en primer lugar (para actualizar o instalar cualquier cosa). Si alguien logra poner archivos php maliciosos en el servidor, ese es un problema completamente nuevo y el uso de chown a diferentes usuarios no ayudaría mucho. - sufinawaz

Gracias, también me salvó el día, ya que no tengo privilegios de FTP, solo acceso de root. - shasi kanth

¡Este es el único que me ayudó! Muchas gracias, después de años desarrollando sitios Wordpress, ¡este sigue siendo un problema clásico! - fantasma ácido

Si está ejecutando WordPress con una compilación inusual, colóquelo en un archivo PHP para verificar quién se está ejecutando Apache (ubuntu, por ejemplo, es www-data): - imperativo

  1. In wp-config.php add define('FS_METHOD', 'direct');
  2. Hacer que el servidor pueda escribir los directorios wp-content/, wp-content/plugins/.
  3. Instale el complemento (copie el directorio del complemento en el wp-content/plugins dr).

Trabajó en la versión 3.2.1

respondido 15 nov., 16:17

También trabajó en la versión 4.0. - Meetai.com

Debe agregar esta opción pero solo necesita cambiar los permisos en wp-content / plugins - Juan Kloian

Estos son explícitamente los pasos que debe seguir para instalar un complemento sin que se le solicite información de FTP. Puede seguir los pasos para fortalecer WordPress con permisos y luego realizar estos 2 cambios, y debe permanecer mayormente seguro. - bozdoz

habiertos wp-config.php archivo y agregue la siguiente línea:

define('FS_METHOD', 'direct');

esto está funcionando para mí ... Gracias

Respondido 27 Feb 18, 17:02

También funciona (y parece necesario) en la versión 5.4 a partir de junio de 2020. - ralf hein

Solo un cambio rápido a wp-config.php

define('FS_METHOD','direct');

Eso es todo, disfruta de tus actualizaciones de wordpress sin ftp!

Metodo alternativo:

Hay hosts que evitarán que este método funcione para facilitar la actualización de WordPress. Afortunadamente, existe otra forma de evitar que esta plaga le solicite su nombre de usuario y contraseña de FTP.

Nuevamente, después de las declaraciones de inicio de sesión de MYSQL en su archivo wp-config.php, agregue lo siguiente:

define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");

Respondido el 26 de diciembre de 14 a las 12:12

Para habilitar el uso de SSH2 para sus actualizaciones y cargas de temas, debe generar sus claves SSH y tener instalado el módulo PHP SSH. Luego, WordPress detectará que tiene SSH2 disponible y verá una opción diferente (SSH2) que se muestra al realizar una carga / actualización.

1.) Asegúrese de tener instalado el módulo PHP para debian, ya que es:

sudo apt-get install libssh2-php

2.) Genere claves SSH, agregar una frase de contraseña es opcional:

ssh-keygen
cd  ~/.ssh
cp id_rsa.pub authorized_keys

3.) Cambie el permiso para que WordPress pueda acceder a esas claves:

cd ~
chmod 755 .ssh
chmod 644 .ssh/*

Ahora obtendrá la opción SSH2 cuando realice una carga / actualización / complemento. Conexión WP SSH

4.) Para mayor facilidad, puede configurar los valores predeterminados en su wp-config.php y esto completará previamente las credenciales SSH en la ventana de carga de WordPress.

define('FTP_PUBKEY','/home/<user>/.ssh/id_rsa.pub');
define('FTP_PRIKEY','/home/<user>/.ssh/id_rsa');
define('FTP_USER','<user>');
define('FTP_PASS','passphrase');
define('FTP_HOST','domain.com');

La 'contraseña' es opcional, si no configura una contraseña durante ssh-kengen; entonces no lo agregues wp-config.php

Esto resolvió mi problema. Y no tuve que hacer el chown en absoluto. Pero he visto este método referenciado en otros lugares.

Referencias:

Respondido el 16 de junio de 13 a las 17:06

no soy un experto en seguridad, y me doy cuenta de que wordpress incluía esta capacidad y pensé que estaba bien ... pero no me siento bien con esto ... 1. tener una cuenta ssh sin frase de contraseña, (cualquiera que tenga la Luego, la clave privada puede iniciar sesión de forma remota en cualquier momento que lo deseen sin una contraseña) y 2. tener una frase de contraseña almacenada en texto plano (ver 1). me recuerda a rsh, dependiendo de la idea de que "nadie tendrá acceso a mis archivos locales" para proteger la contraseña de red de un sistema. - don brillante

Estoy seguro de que puede generar la frase de contraseña y NO agregarla a wp-config.php, luego solo tendrá que escribirla cuando llegue al cuadro de diálogo Información de conexión. - JacquelineIO

Es un gran agujero de seguridad usar una clave privada sin cifrar de esta manera. Pero puede mitigar el problema anteponiendo un "desde = lo que sea" a la línea correspondiente en claves_autorizadas. - Markhahn

Esto es genial, pero parece que hay una incompatibilidad con php7: core.trac.wordpress.org/ticket/35517 - Supaikú

Por lo general, puede cargar su complemento en el wp-content\plugins directorio. Si no tiene acceso a este directorio a través de SFTP, me temo que puede estar bloqueado.

Respondido el 20 de diciembre de 14 a las 01:12

Sí, solo colócalos en wp-content / plugins. - ceejayoz

Cambiar de php_mod a fastcgi a cgi & SuEXEC activado (ISPConfig usuarios). Funciona para mi.

Si no funciona, intente cambiar wp-content a 775 as root or sudo usuario:

chmod -R 775 ./wp-content

Luego agregar a wp-config.php:

define('FS_METHOD', 'direct');

Buena suerte

Respondido el 23 de junio de 20 a las 07:06

Puede obtenerlo muy fácilmente escribiendo el siguiente comando en el símbolo del sistema

sudo chown -R www-data:www-data your_folder_name

o copie y pegue el siguiente código en su archivo wp-config.php.

define('FS_METHOD', 'direct');

Donde "your_folder_name" es la carpeta donde está instalado WordPress dentro de esta carpeta.

Respondido 27 Feb 18, 10:02

Si estas en Ubuntu, una solución rápida que funcionó para mí es dar propiedad a la APACHE usuario (www-data por defecto) así:

cd your_wordpress_directory
sudo chown -R www-data wp-content
sudo chmod -R 755 wp-content

Respondido el 20 de diciembre de 14 a las 02:12

No otorgue permiso de ejecución a archivos que no lo necesiten. - Burhan Alí

Ejecute el siguiente código en la terminal

sudo chown -R www-data /var/www

Para más detalles visite Wordpress en Ubuntu instala complementos sin acceso FTP

contestado el 23 de mayo de 17 a las 13:05

No es una buena idea dar acceso a www-data a todo en su directorio web - WoodyDRN

variante que funcionó para mí: sudo chown -R www-data /var/www/html - jules colle

Agregue el siguiente código a wp-config

define('FS_METHOD', 'direct');

FS_METHOD fuerza el método del sistema de archivos. Solo debe ser direct, ssh2, ftpext o ftpsockets. Por lo general, solo debe cambiar esto si tiene problemas de actualización. Si lo cambia y no ayuda, cámbielo de nuevo / elimínelo. En la mayoría de las circunstancias, configurarlo en 'ftpsockets' funcionará si el método elegido automáticamente no lo hace.

(Preferencia principal) "directo" lo obliga a usar solicitudes de E / S de archivos directos desde PHP, esto está lleno de problemas de seguridad en hosts mal configurados. Esto se elige automáticamente cuando es apropiado.

(Preferencia secundaria) "ssh2" es forzar el uso de la extensión SSH PHP si está instalada

(3.ª preferencia) "ftpext" es forzar el uso de la extensión FTP PHP para el acceso FTP, y finalmente

(4ta preferencia) "ftpsockets" utiliza la clase PHP Sockets para acceso FTP

Para más información visite: http://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants

contestado el 22 de mayo de 14 a las 06:05

WordPress 2.7 le permite cargar un archivo zip directamente (hay un enlace en la parte inferior de la página de complementos), no se necesita acceso FTP. Esta es una característica nueva en 2.7 y solo funciona para complementos (todavía no para temas).

respondido 12 mar '09, 21:03

Por cierto, la actualización es aún más fácil: verá un icono que indica que hay una nueva versión disponible, haga clic en "actualizar" y deje que haga lo suyo. Muy agradable. Incluso el núcleo de WordPress se actualiza de esta manera: pasé de 2.7 a 2.7.1 sin cargar nada. - D. Lamberto

Esto solo es cierto si tiene los permisos de archivo configurados para que el servidor web / usuario de PHP pueda escribir en ellos. De lo contrario, le pedirá las credenciales de FTP / SFTP. Vea la respuesta de stereointeractive.com. - david forgac

Resucitando un hilo antiguo, pero hay un nuevo complemento fantástico llamado Compatibilidad con SSH SFTP Updater que agrega capacidades SFTP sin necesidad de editar su wp-config.php expediente. Además, la implementación SFTP de Wordpress se basa en algunos módulos PHP algo oscuros que a menudo no están habilitados en los servidores; este complemento incluye un complemento SFTP de PHP diferente para que no tenga que configurar nada en el lado de Apache.

Me encontré con toneladas de problemas para que funcione el soporte SFTP: este complemento los resolvió todos y es simplemente fantástico.

Respondido 08 Feb 12, 16:02

La respuesta de stereointeractive cubre todas las opciones. Solo quería mencionar una forma alternativa de usar FTP. Supongo que la razón por la que no permite el acceso FTP es por seguridad. Una forma de abordar esas preocupaciones de seguridad es ejecutar su servidor FTP escuchando solo en 127.0.0.1

Esto le permite usar FTP desde dentro de WordPress y podrá instalar complementos sin exponerlo al resto del mundo. Esto también se puede aplicar a otras aplicaciones web populares como Joomla! y Drupal. Esto es lo que hacemos con nuestro Electrodomésticos BitNami y servidores en la nube y funciona bastante bien.

Respondido 27 Jul 11, 15:07

También recomiendo el Complemento de compatibilidad con SSH SFTP Updater. También resolví todos mis problemas ... especialmente en lo que respecta a obtener complementos para eliminar a través del administrador. Simplemente instálelo de la manera habitual, y la próxima vez que WordPress le solicite detalles de FTP, habrá campos adicionales para que copie / pegue su clave SSH privada o cargue su archivo PEM.

El único problema que tengo es que recuerde la clave (probé ambos métodos). No me gusta la idea de tener que buscarlo e ingresarlo cada vez que necesito eliminar un complemento. Pero al menos es una solución sólida por ahora.

Respondido 27 Feb 12, 19:02

"habrá campos adicionales para que copie / pegue su clave SSH privada" ... no soy un genio de la seguridad, pero ... no es el objetivo de las claves ssh privadas que nunca tenga que enviarlas a través de una red ? - don brillante

Sí, instale directamente el complemento en WordPress.

  1. Copie la carpeta del complemento y péguela en la carpeta del complemento de WordPress.
  2. vaya al lado de administración (/ test / wp-admin) y luego vaya al enlace del complemento y verifique el nombre del complemento.
  3. Active el complemento para instalar el complemento fácilmente.

otra opción

  1. cree el archivo zip para el código del complemento.
  2. vaya al lado del administrador (/ test / wp-admin) luego vaya al enlace del complemento y luego haga clic en agregar nuevo, luego busque la carpeta zip del complemento e instale el complemento, luego salga la opción activar el complemento, así que active el complemento y activar el complemento.

contestado el 06 de mayo de 14 a las 05:05

Vi a muchas personas recomendando establecer el permiso en 777. Tuve el mismo problema hace 2 días y todo lo que hice fue agregar esto a wp-content

define('FS_METHOD', 'direct');

y

establezca el permiso en 775 para la carpeta de complementos

Esto resolvió mi problema de solicitar inicio de sesión / contraseña de acceso FTP.

Antes de eso, tuve que agregar el complemento manualmente agregando el archivo .zip a la carpeta del complemento y luego ir a wp-admin/plugins y tuve que instalarlo.

Respondido 23 Jul 17, 03:07

Es posible usar SFTP o SSH para actualizar automáticamente los complementos en WordPress, pero debe tener la extensión ssh2 pecl. Puede averiguar cómo hacerlo, utilizando el siguiente tutoriales

Respondido el 14 de Septiembre de 09 a las 12:09

Usamos SFTP con SSH (tanto en nuestros servidores de desarrollo como en vivo), y he intentado (aunque no demasiado) usar la función de carga de WordPress. Estoy de acuerdo con Toby, sube tu (s) plugin (s) a la wp-content/plugins directorio y luego activarlos desde allí.

Respondido el 20 de diciembre de 14 a las 02:12

Prueba esta

1) en el wp-config.php add define('FS_METHOD', 'direct');

2) Configure el wp-content directorio a 777 para escritura.

3) Ahora instale el complemento.

Respondido 28 Abr '20, 17:04

Hola Mohan, muchas gracias por la opción FS_METHOD. De hecho, esto es lo que estaba buscando. Necesito decir lo siguiente: ningún directorio debería necesitar 777 a menos que las circunstancias sean excepcionales. Esto hace que un mundo de directorios sea legible, escribible y ejecutable. Este es un riesgo de seguridad masivo. La solución adecuada es averiguar quién es su usuario de apache (www-data, _www o similar). Este usuario necesita acceso de lectura y escritura a wp-content o necesita ser propietario de este directorio ('sudo chown www-data wp-content'), sin derechos de ejecución. Lamento ser un poco directo, pero 777 es peligroso para el contenido web. - Ruben

¡No 777 su directorio de cargas, esto no es seguro y no debería ser una respuesta! - Soluciones Web MKN

Pruebe esto Compruebe si se ha otorgado el permiso correcto a la carpeta wp-content.

Edite el wp-config.php agregue la siguiente línea

define('FS_METHOD', 'direct');

chmod el directorio "wp-content" a www-data para acceso completo.

Ahora intente instalar el complemento.

Respondido el 18 de diciembre de 17 a las 07:12

Sí, tú puedes hacerlo.

Necesitas agregar

define('METHOD','direct');

en su wpconfig. Pero este método no será preferible porque tiene limitaciones de seguridad.

Gracias,

contestado el 21 de mayo de 19 a las 07:05

no debería ser FS_METHOD? - ericksho

Método 1: Puede configurar esto: 1. en wp-config.php necesita escribir estas líneas.

define('FS_METHOD', 'direct'); 

Nota: ponga esto después de define ('DB_CHARSET', 'utf8mb4').

  1. establezca el permiso de wp-content o el permiso de forma recursiva 775 el permiso completo que puede otorgar a través de filezilla. escriba haga clic en directorio> permisos> verifique lectura-escritura y ejecute y también verifique Recurse en subdirectorios

Método 2:

o también puede configurar esto

define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");

Respondido el 16 de junio de 20 a las 15:06

para febrero de 2020, es una instrucción clara, Note: put this after define( 'DB_CHARSET', 'utf8mb4' ). - Osificar

configurar un ftp o incluso una conexión SFTP o chmod 777 son malos caminos para cualquier cosa que no sea un entorno local. Abrir incluso un método SFTP introduce más riesgos de seguridad que no son necesarios.

lo que se necesita es un permiso de escritura para / wp-content / uploads & / wp-content / plugins / por parte del propietario de esos directorios. (linux ls -la le mostrará la propiedad).

El usuario de apache predeterminado que se ejecuta es www-data.

chmod 777 permite que cualquier usuario de la máquina edite esos archivos, no solo el usuario del hilo apache / php.

SFTP, si aún no lo está utilizando, introducirá otro punto de posible falla de una fuente externa. Mientras que solo necesita acceso por parte del usuario local que ejecuta el proceso apache / php para completar el objetivo.

No vi a nadie haciendo estos puntos, así que pensé en ofrecer esta información para ayudar con nuestros constantes problemas de seguridad de WP en línea.

Respondido 12 ago 18, 22:08

He aquí un método sencillo.

Ejecute los siguientes comandos.

Esto habilitará su módulo mod_rewrite para Apache

$sudo a2enmod rewrite

Este comando cambiará el propietario de la carpeta a www-data

$sudo chown -R www-data [Wordpress Folder Location]

Después de ejecutar los comandos anteriores, puede instalar cualquier tema sin FTP.

Respondido 01 Abr '19, 20:04

Para Nginx, simplemente ejecute el segundo comando sudo chown -R www-data [Wordpress Folder Location] - srokatonie

@srokatonie gracias por el comentario. esto será útil para todos. - Manuja Jayawardana

Por favor, añada define('FS_METHOD','direct'); en wo-config.php

Respondido el 21 de junio de 19 a las 11:06

La única razón por la cual WordPress no le permitirá cargar ningún complemento a través del panel de administración de WordPress cuando no tiene permiso para escribir en el directorio / wp-content. Recuerde que su directorio de wordpress / wp-content requiere un nivel de permiso 0755. Hay varias formas de cambiar el nivel de permiso de una carpeta.

Cambiar los permisos de archivo usando cPanel:

Vaya al Administrador de archivos y abra la carpeta HTML pública donde se supone que debe estar su sitio web de WordPress, o abra el directorio raíz del sitio si su sitio web está en otra carpeta. En su directorio raíz de WordPress navegue hacia la carpeta wp-content; al final de la fila de la carpeta wp-content, el último cuadro contiene los permisos de archivo para esta carpeta. Asegúrese de editar el nivel de permiso de la carpeta a 0755 y listo.

Cambiar los permisos de archivo usando el terminal SSH:

En su terminal, ubique la raíz del sitio de WordPress, que en mi caso era / var / www / html, así que para moverse al directorio raíz de WordPress, ingrese el siguiente comando:

cd /var/www/html 

Ahora se encuentra en el directorio raíz de WordPress donde se encuentra la carpeta requerida / wp-content. Entonces, para cambiar los permisos del archivo, escriba el siguiente comando:

sudo chmod wp-content 755 

Esto cambiará su permiso de archivo del directorio / wp-content a 0755.

Ahora no recibirá un mensaje de error al cargar complementos de wordpress a través de FTP.

Respondido el 23 de Septiembre de 19 a las 20:09

Puede agregar lo siguiente en wp-config.php

define('METHOD','direct');

Aquí hay un video de youtube que explica cómo hacerlo. https://youtu.be/pq4QRp4427c

Respondido el 13 de diciembre de 20 a las 07:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.