¿Cómo puedo evitar que WordPress me pida que ingrese información de FTP cuando hago actualizaciones?
¿Cómo puedo evitar que WordPress me pida que ingrese información de FTP cuando hago actualizaciones?
Si edita su archivo wp-config.php
, puede precargar estas configuraciones de FTP como constantes leídas por WordPress. Tenga en cuenta que, en un servidor compartido, debe tener en cuenta las posibles implicaciones de seguridad.
Consulte Edición wp-config.php
para obtener más información.
Su configuración variará, pero esto funciona para mí y para mi configuración de alojamiento. He incluido algunas de las constantes no utilizadas, con 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);
Comprueba la propiedad de tu archivo. Cuando el usuario que ejecuta Apache puede escribir en los directorios de WordPress, el proceso de actualización integrado funciona sin ftp. Las credenciales de FTP son para si el servidor web no tiene los privilegios adecuados para sus archivos, WordPress le solicita sus detalles de FTP e intenta usarlos para volver a enviarlos al mismo servidor en el que se encuentra para poder escribir archivos que necesita.
Parece que WordPress no solo comprueba si los directorios son de escritura, sino que también verifica si el usuario de Apache OWNS 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);
}
Por lo tanto, 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í: enlace
Al ajustar con precisión Apache 2.4 a través de EasyApache4 para mejorar la velocidad de carga del sitio web en un servidor Centos 7 PHP 7, había habilitado 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 a mod_cgi. Sin mod_ruid2, Wordpress solicitará las credenciales de FTP.
No es necesario codificar el código wp-config.php o configurar los permisos de archivo (peligrosamente) a 777. Simplemente habilite mod_ruid2 manualmente, reinicie Apache y se solucionó el problema de permisos de FTP / archivo. Wordpress y los complementos ahora se pueden actualizar como de costumbre y los medios se cargan en la galería de Wordpress. Funciona de inmediato.
Acabo de verificar que al cambiar de MPM Prefork a Worker, se deshabilitará mod_ruid2. Al revertir 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.
1) No podría estar de acuerdo con la respuesta anterior porque es demasiado genérico
1a) No quiero cambiar la propiedad de todos mis archivos de forma recursiva (como al usar una escopeta para matar a un mosquito). Especialmente porque esto funciona perfectamente antes.
1b) Wordpress con la característica "furtiva" de repente le pide credenciales para ftp
2) Así que empecé a profundizar más usando Ardee Aram como su líder. Fui a revisar el archivo file.php y verifiqué su propiedad. Parece que file.php depende de su propiedad (que se configuró incorrectamente como root).
Solución: chown www file.php
NOTA: Reemplace www con lo 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 otra persona a frustrarse por esto. Ni siquiera entiendo por qué WordPress no se "queja" en primer lugar y luego propone utilizar la alternativa de FTP. Ahora es como una "característica" que de repente se presenta.