Para realizar la acción solicitada, WordPress necesita acceder a tu servidor web. Por favor, ingresa tus credenciales FTP

2 jun 2016, 19:13:57
Vistas: 213K
Votos: 85

Estoy siguiendo Cambiar Permisos de Archivos « WordPress Codex, sin embargo cuando intento actualizar y/o instalar un plugin y/o tema a través de wp-admin, obtengo lo siguiente:

Para realizar la acción solicitada, WordPress necesita acceder a tu servidor web. Por favor, ingresa tus credenciales FTP para continuar. Si no recuerdas tus credenciales, deberías contactar a tu proveedor de hosting.

desde el nivel del sistema de archivos:

# ls -ld wp-content/ wp-content/plugins/ wp-content/themes/
drwxrwxr-x.  6 root apache 4096 Jun  2 12:01 wp-content/
drwxrwxr-x. 28 root apache 4096 Jun  2 00:00 wp-content/plugins/
drwxrwxr-x. 11 root apache 4096 May 11 16:34 wp-content/themes/
# 

httpd se ejecuta como apache:

$ ps auxw | grep httpd
root     20158  0.0  0.1 533080 26192 ?        Ss   15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20233  0.0  0.2 612608 34908 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20234  0.0  0.2 538772 46904 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20235  0.0  0.1 536832 24268 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20236  0.0  0.2 626272 35640 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20237  0.0  0.0 535296  9592 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20322  0.0  0.1 537088 26620 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20380  0.0  0.2 626060 33816 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20429  0.0  0.1 538216 29184 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20447  0.0  0.2 629380 43180 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20448  0.0  0.2 626172 35224 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
alexus   24073  0.0  0.0 112652   972 pts/9    R+   15:13   0:00 grep --color=auto httpd
$ 

Me gustaría poder realizar la acción solicitada (instalar y/o actualizar) a través de /wp-admin sin credenciales FTP.

¿Cómo puedo hacer eso?

7
Comentarios

¿Es esta una instalación en localhost? Si es así, consulta: http://wordpress.stackexchange.com/questions/19649/wordpress-on-localhost-lamp-doesnt-let-me-install-plugins

Greg McMullen Greg McMullen
2 jun 2016 20:55:03

@GregMcMullen no, esta NO es una instalación en localhost y la respuesta "aceptada" del enlace que comentas es cambiar recursivamente la propiedad de un directorio de WordPress a nobody - esto no funcionará para mí porque httpd se ejecuta como apache.

alexus alexus
2 jun 2016 22:32:37

@alexus Parece que tus archivos actualmente son propiedad de root.apache. ¿Probaste con apache.apache en lugar de nobody?

Tim Malone Tim Malone
3 jun 2016 00:28:43

@TimMalone configurar archivos/directorios como apache.apache o root.apache no haría ninguna diferencia, siempre y cuando httpd se ejecute como apache, y el uid de apache sea parte del grupo gid de apache, todo es igual, porque mis permisos están configurados como g+w.

alexus alexus
3 jun 2016 00:37:49

@alexus Bien, algo más para probar - establece FS_METHOD como 'direct' en wp-config.php (https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants)

Tim Malone Tim Malone
3 jun 2016 00:43:18

@TimMalone según https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants - Nota que tu selección aquí tiene serias implicaciones de seguridad.

alexus alexus
3 jun 2016 00:52:40
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 7
9
185

Agrega lo siguiente en el archivo wp-config.php:

define( 'FS_METHOD', 'direct' );

Déjame saber cómo te funciona.

22 jun 2017 17:34:31
Comentarios

funcionó para mí a menos que tengas permisos incorrectos en el sistema de archivos. Por cierto, lo agregué al principio del archivo wp-config.php

Toskan Toskan
28 sept 2018 21:12:51

Asegúrate de leer la publicación que Alexus enlazó antes de usar este método. Este método definitivamente funciona (resolvió el problema para mí), pero definitivamente no deberías usar este método en un entorno de hosting compartido o cualquier entorno de riesgo donde puedas comprometer la seguridad al hacer esto.

JamesHoux JamesHoux
18 may 2019 18:51:38

después de agregar esto me aparece este error:

Update Failed: The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.

Shawn Shawn
18 mar 2020 05:57:35

Esto es potencialmente peligroso para usuarios que migran sus sitios completos desde localhost a un servidor en producción. Preferiría que uses el método de @Syamraj K modificando los permisos de archivos, o que elimines esto de tu wp-config.php antes de migrar en línea

Cedric Ipkiss Cedric Ipkiss
10 nov 2020 03:48:04

¡¡hermano!! eres mi héroe. gracias por ahorrarme horas de trabajo con esto

Jacky Supit Jacky Supit
14 feb 2021 16:31:03

Si te gusta usar WP CLI, puedes ejecutar este comando en su lugar: wp config set FS_METHOD direct. Esto modificará el archivo wp-config.php

Flimm Flimm
2 sept 2022 11:00:22

Por favor explica qué hace esto antes de que tantos lo inserten ciegamente en su archivo de configuración.

Altimus Prime Altimus Prime
5 abr 2023 06:53:57

WP alojado en Google Cloud Compute: Añadí el define( 'FS_METHOD', 'direct' ); en wp-config luego asigné los permisos con sudo chown -R www-data:www-data /home/misitio/public_html/ luego actualicé el plugin y revertí los permisos con sudo chown -R misitio:misitio /home/misitio/public_html/

Patrik Rikama-Hinnenberg Patrik Rikama-Hinnenberg
3 may 2024 17:46:31
Mostrar los 4 comentarios restantes
7
32

Esto significa que WordPress tiene permisos limitados para realizar cambios en la carpeta donde fue instalado.

Para solucionar esto, todo lo que necesitas hacer es proporcionar los permisos necesarios.

Ejecuta el siguiente comando en tu Terminal / Putty / Línea de comandos después de conectarte a tu servidor via SSH:

sudo chown -R apache:apache /var/www/html
5 ago 2016 09:35:11
Comentarios

los permisos están bien, vuelve a leer mi pregunta)

alexus alexus
5 ago 2016 21:55:08

chown: usuario no válido: ‘apache:apache’

numediaweb numediaweb
2 feb 2018 11:46:50

Recuerda, Apache puede ser diferentes usuarios en distintas distribuciones de Linux. Puedes probar con groups <username> y ver si da error o no, ya que el usuario y grupo para Apache suelen ser el mismo. Luego usa el usuario correcto. Los más comunes en Ubuntu son "www-data:www-data" o "www:www" para hacer chown de archivos de Apache.

MontyThreeCard MontyThreeCard
25 ene 2019 18:09:55

Después de que pude encontrar el nombre de usuario correcto, esto funcionó de maravilla (ver también comando para listar todos los usuarios)

Top-Master Top-Master
8 ene 2020 13:38:45

En caso de que quieras usarlo en OSX, usa _www:_www (Mojave, no sé cómo sería en otras versiones)

Larzan Larzan
6 may 2020 17:08:58

Esta es una mejor respuesta. La respuesta con más votos es peligrosa para muchos usuarios inexpertos que migran directorios completos de sitios web desde localhost a un servidor en producción, incluso cuando usan plugins de WordPress

Cedric Ipkiss Cedric Ipkiss
10 nov 2020 03:46:45

Funcionó perfectamente :) evita usar define( 'FS_METHOD', 'direct' );

Himanshu Rawat Himanshu Rawat
7 mar 2021 12:27:40
Mostrar los 2 comentarios restantes
3
10

Aunque es totalmente correcto tener la propiedad como root:apache con permisos 775, y que httpd se ejecute como apache, a WordPress no le gusta esto. Quiere que el propietario sea apache, según se indica en wp-admin/includes/file.php:

    // Intenta determinar el propietario de los archivos de WordPress y el de los nuevos archivos creados
   $wp_file_owner = $temp_file_owner = false;
   if ( function_exists('fileowner') ) {
      $wp_file_owner = @fileowner( __FILE__ );
      $temp_file_owner = @fileowner( $temp_file_name );
  }

En tu caso sería:
wp_file_owner = root
temp_file_owner = apache

if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) {
    // WordPress está creando archivos con el mismo propietario que los archivos de WordPress,
    // esto significa que es seguro modificar y crear nuevos archivos mediante PHP.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
    // El directorio $context tiene permisos de escritura y $allow_relaxed_file_ownership está activado, lo que significa que podemos modificar archivos
    // de forma segura en este directorio. Este modo no crea nuevos archivos, solo modifica los existentes.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}

Si $wp_file_owner es igual a $temp_file_owner, entonces procede. En tu caso entraría en el elseif, que según el comentario no permite eliminar/crear, solo actualizar (verifiqué esto actualizando el código de un plugin desde WordPress, y funcionó).

Nota: No analicé exhaustivamente el código, esto es solo mi interpretación rápida. Tuve el mismo problema y una vez que cambié el usuario:grupo para que el usuario de httpd también sea el propietario de los archivos, dejó de solicitar credenciales FTP.

23 ago 2017 20:14:32
Comentarios

Sí, cambiar el propietario a www-data funcionó para mí. ¡Qué curioso WordPress!

ankush981 ankush981
30 ago 2018 06:45:02

interesante hallazgo, voy a investigar eso... gracias +1 de mi parte)

alexus alexus
16 dic 2019 19:07:15

Por si alguien tiene este problema: esto solo funcionó cuando cambié el propietario de TODOS los archivos/directorios de WordPress a mi usuario del servidor web. Solo cambiar el directorio wp-content y todos sus subdirectorios no resolvió el problema. Tuve que cambiar recursivamente el directorio raíz de WordPress y todos sus subdirectorios para que funcionara.

Ambulare Ambulare
5 feb 2021 16:29:32
0

No es una respuesta directa, pero probablemente deba mencionarse: este es un problema que deberías evitar solucionar a menos que estés hablando de un entorno de desarrollo local, en cuyo caso simplemente puedes establecer los permisos en 777.

La razón es que si el servidor web puede sobrescribir tu código, entonces cualquier código malicioso que se ejecute en él también podrá hacerlo. El riesgo es simplemente mucho mayor que la conveniencia de ahorrar unos segundos al no tener que escribir las credenciales de FTP.

3 jun 2016 06:01:35
0

Aunque la pregunta ya no es tan nueva, quiero añadir mi granito de arena sobre este tema también.

Mucha gente tiene Centos(7) en sus servidores VPS y las siguientes líneas de código podrían resolver su problema.

En mi opinión, todo tiene que ver con SELinux, que impide que WordPress haga su trabajo como se desea. Sería demasiado extenso explicar qué es SELinux y qué hace. Para su información, la introducción comienza con:

Security-Enhanced Linux (SELinux) es un mecanismo de seguridad de control de acceso obligatorio (MAC) implementado en el kernel.

Solo 3 pasos a seguir:

  • 1 Abre una terminal (o accede al servidor a través de SSH)
  • 2 Añade la siguiente línea de código chcon -R -t httpd_sys_content_t /var/www/html/wordpress
  • 3 Añade la segunda línea de código chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress

No es necesario reiniciar el servidor ni reiniciar ningún daemon.

No diré que ayuda a todo el mundo, pero para aquellos que no deshabilitaron SELinux debería ser un alivio.

Saludos

Nota: Por favor, ajústalo a tus propias necesidades (es decir, la ruta a WordPress)

edición: asegúrate de eliminar la línea define("FS_METHOD", "direct"); cuando se haya usado o se use en wp-config.php porque eso es absolutamente inaceptable cuando las líneas de código anteriores hacen lo deseado.

2 may 2018 02:07:39
2

agrega lo siguiente a tu archivo wp-config.php entre los 2 comentarios

/* Añade cualquier valor personalizado entre esta línea y la línea "stop editing". */

define( 'FS_METHOD', 'direct' );

/* ¡Eso es todo, deja de editar! Feliz publicación. */
14 feb 2023 16:05:25
Comentarios

Eso es lo mismo que la respuesta más votada existente excepto por los comentarios. ¿Realmente importa eso?

Rup Rup
15 feb 2023 12:45:39

Agregué la respuesta porque, saber dónde agregar el código realmente ayudaría a otro principiante como yo :)

shimii shimii
15 feb 2023 17:41:58
0

En mi caso, lo solucioné cambiando de GIT de vuelta al modo FTP.

No más advertencias.

Quizás esto le ayude a alguien más también.

16 ago 2018 21:12:32