¿Cómo puedo evitar que WordPress me solicite que ingrese información de FTP cuando realice actualizaciones?

29

¿Cómo puedo evitar que WordPress me solicite que ingrese información de FTP cuando realice actualizaciones?

artlung
fuente

Respuestas:

23

Si edita su wp-config.phparchivo, puede precargar estas configuraciones FTP como constantes leídas por WordPress. Tenga en cuenta que, en un host compartido, debe tener en cuenta las posibles implicaciones de seguridad. Vea Ediciónwp-config.php para más información.

Su configuración variará, pero estos funcionan para mí y mi configuración de alojamiento. He incluido algunas de las constantes no utilizadas, con el prefijo:

define('FS_METHOD', 'direct');
define('FTP_BASE', '/usr/home/username/public_html/my-site.example.com/wordpress/');
define('FTP_CONTENT_DIR', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/plugins/');
// define('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub');
// define('FTP_PRIKEY', '/home/username/.ssh/id_rsa');
define('FTP_USER', 'my-ftp-username');
define('FTP_PASS', 'my-ftp-password');
define('FTP_HOST', 'ftp.my-site.example.com');
// define('FTP_SSL', false);
artlung
fuente
Esta es la forma más simple, pero como dice pixeline a continuación, verifique los permisos del archivo. Dos de las tres credenciales se almacenan en la base de datos, pero la tercera se escribe en un archivo (no recuerdo cuál está fuera de mi cabeza).
John P Bloch
12

Verifique la propiedad de su archivo. Cuando el usuario que ejecuta Apache puede escribir en los directorios de WordPress, entonces el proceso de actualización integrado funciona sin ftp. Las credenciales de FTP son para si el servidor web no tiene los privilegios correctos en sus archivos, luego Wordpress le solicita sus detalles de FTP e intenta usarlos para volver a FTP en el mismo servidor en el que está para poder escribir el archivos que necesita.

pixeline
fuente
1
Realmente no debe modificar la propiedad del archivo a la del servidor web, ya que esto es un riesgo potencial de seguridad.
Otto
... a menos que esté mal configurado, como en mi caso :)
pixeline
5

Parece que WordPress no solo comprueba si los directorios son editables, sino que también comprueba si el usuario de Apache posee los directorios (o al menos, si el usuario de Apache posee el archivo temporal que crea). Observe estas líneas de código en /wp-admin/includes/file.php: get_filesystem_method ():

if ( $temp_handle ) {
    if ( getmyuid() == @fileowner($temp_file_name) )
        $method = 'direct';
    @fclose($temp_handle);
    @unlink($temp_file_name);
}

Entonces, una solución rápida será emitir este comando y otorgar la propiedad de toda la instalación de Wordpress a Apache:

sudo chown -R www-data wordpress/

Donde www-data es el usuario de Apache y, por supuesto, WordPress es su carpeta de instalación de WordPress.

He documentado aún más mi solución aquí: https://ardeearam.wordpress.com/2013/02/03/solved-wordpress-asking-for-ftp-credentials-when-upgrading/

Ardee Aram
fuente
Ese enlace está muerto ahora. Aquí hay un archivo: web.archive.org/web/20131213005955/http://rubiks.ph/…
Sam Wilson
¿Alguien puede explicar los detalles de: "$ allow_relaxed_file_ownership Opcional. Si se permite la escritura grupal / mundial".
Sam Wilson
@Sam Wilson He migrado algunas de mis entradas de blog a una cuenta gratuita de WordPress. El antiguo dominio está muerto.
Ardee Aram
1

Al ajustar Apache 2.4 a través de EasyApache4 para mejorar la velocidad de carga del sitio web en un servidor Centos 7 PHP 7, habilité mod_pagespeed. Al habilitarlo, deshabilitará automáticamente mod_ruid2 y mod_cgi (y habilitará otros dos módulos). Al deshabilitar mod_pagespeed, no volverá a habilitar mod_ruid2 automáticamente, solo volverá a habilitar mod_cgi. Sin mod_ruid2, Wordpress solicitará las credenciales de FTP.

No hay necesidad de codificar wp-config.php o establecer permisos de archivos (peligrosamente) en 777. Simplemente habilite mod_ruid2 manualmente, reinicie Apache y se resolverá el problema de permiso de FTP / archivo. Wordpress y los complementos ahora se pueden actualizar como de costumbre y cargar los medios en la galería de Wordpress. Funciona de inmediato.

Acabo de comprobar que al cambiar de MPM Prefork a Worker, deshabilitará mod_ruid2. Al volver de Worker a Prefork, no habilitará mod_ruid2, causando el problema descrito en esta publicación.

En ambos casos, la clave es verificar y habilitar mod_ruid2.

Espero haber ayudado.

itmonitor
fuente
-1

1) No podría estar de acuerdo con la respuesta anterior porque es demasiado genérica

1a) Simplemente no quiero cambiar la propiedad de todos mis archivos de forma recursiva (como usar una escopeta para matar un mosquito). Sobre todo porque esto funciona perfectamente antes.

1b) Wordpress tiene la característica "furtiva" de repente de pedirle credenciales para ftp

2) Así que comencé a cavar más profundo usando la ventaja de Ardee Aram. Fui revisando el archivo file.php y verifiqué su propiedad. Parece que el archivo.php depende de su propia propiedad (que se configuró incorrectamente como root).

Arreglo: chown www file.php

NOTA: Reemplace www con cualquiera que sea su distribución o configuración (puede usar ps aux | egrep "php | http" y ver cuál es su propiedad en la primera columna.

Espero que esto ayude a alguien más a sentirse frustrado por esto. Ni siquiera entiendo por qué Wordpress no se "queja" en primer lugar y luego propone usar la alternativa FTP. Ahora es como una "característica" que de repente se introduce.

th3penguinwhisperer
fuente
Bienvenido a WPSE, th3penguinwhisperer. Por favor, siéntase libre de hacer el recorrido . Re 'la respuesta anterior', las respuestas pueden cambiar el orden en cualquier momento como resultado de los votos de las personas. Me encantaría que editaras tu publicación para especificar a qué respuesta te refieres para que quede claro. Gracias por agregar tus pensamientos!
Tim Malone