Para realizar la acción solicitada, WordPress necesita acceder a tu servidor web. Por favor, ingresa tus credenciales FTP
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?


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

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.

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.

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

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

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

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

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/

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

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.

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

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

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

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.

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

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.

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.

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.
