Je suis Modification des autorisations sur les fichiers "WordPress Codex ), mais lorsque je tente de mettre à jour et/ou d’installer plugin
et/ou theme
à wp-admin
, les éléments suivants me suivent:
Pour effectuer l'action demandée, WordPress doit accéder à votre serveur Web. Veuillez entrer vos identifiants FTP pour continuer. Si vous ne vous souvenez pas de vos informations d'identification, vous devez contacter votre hébergeur.
à partir du niveau du système de fichiers:
# 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
s'exécute en tant que 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
$
J'aimerais pouvoir effectuer l'action demandée (install
et/ou update
) via /wp-admin
sans informations d'identification FTP.
Comment puis je faire ça?
Ajoutez ce qui suit à wp-config.php:
define( 'FS_METHOD', 'direct' );
Faites moi savoir comment ça marche pour vous.
Cela signifie que WordPress dispose d'une autorisation limitée pour apporter des modifications au dossier dans lequel il a été installé.
Afin de résoudre ce problème, tout ce que vous devez faire est de fournir les autorisations nécessaires pour la même chose.
Exécutez la commande suivante dans votre invite Terminal/PuTTY/Commandline après vous être connecté à votre serveur via SSH:
Sudo chown -R Apache:apache /var/www/html
Commander cet article pour plus de détails.
Ce n’est pas une réponse directe, mais il faut probablement le préciser - c’est un problème que vous devez éviter de résoudre, sauf si vous parlez de développement local. Dans ce cas, vous pouvez simplement définir des autorisations sur 777.
La raison en est que si le serveur Web peut écraser votre code, tout code malveillant qui s'exécute sur celui-ci pourra également le faire. Le risque est tellement plus grand que la commodité de gagner quelques secondes en évitant de saisir les informations d'identification ftp.
Même s'il est tout à fait correct d'avoir la propriété en tant que root:Apache
avec les autorisations 775 et httpd d'exécuter en tant que Apache
, Wordpress ne l'aime pas. Il veut que le propriétaire soit Apache
, conformément à wp-admin/includes/file.php
:
// Attempt to determine the file owner of the WordPress files, and that of newly created files
$wp_file_owner = $temp_file_owner = false;
if ( function_exists('fileowner') ) {
$wp_file_owner = @fileowner( __FILE__ );
$temp_file_owner = @fileowner( $temp_file_name );
}
Le vôtre serait:
wp_file_owner = root
temp_file_owner = Apache
if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) {
// WordPress is creating files as the same owner as the WordPress files,
// this means it's safe to modify & create new files via PHP.
$method = 'direct';
$GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
// The $context directory is writable, and $allow_relaxed_file_ownership is set, this means we can modify files
// safely in this directory. This mode doesn't create new files, only alter existing ones.
$method = 'direct';
$GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}
Si $ wp_file_owner est identique à $ temp_file_owner, continuez. Le vôtre serait pris dans le elseif, qui selon le commentaire ne permet pas de supprimer/créer, mais seulement les mises à jour (j'ai vérifié cela en mettant à jour le code d'un plugin à partir de Wordpress, et cela a fonctionné).
Notez que je n'ai pas beaucoup regardé dans le code, ceci est juste mon interprétation rapide. J'ai eu le même problème et une fois que j'ai changé d'utilisateur: groupe de sorte que l'utilisateur httpd soit également le propriétaire du fichier, il ne demande plus d'informations d'identification FTP.
Dans mon cas, j'ai résolu ce problème en passant de GIT au mode FTP.
Plus d'avertissement.
Cela aidera peut-être aussi quelqu'un d'autre.
Bien que la question ne soit plus aussi nouvelle, je souhaite également ajouter mes deux sous.
Beaucoup de personnes ont Centos (7) sur leur serveur VPS et les lignes de code suivantes pourraient résoudre leur problème.
Imho a tout à voir avec SELinux qui empêche WordPress de faire son travail comme souhaité. Il va trop loin pour expliquer ce que SELinux est et ce qu’il fait. FYI l'introduction commence par:
SELinux (Security-Enhanced Linux) est un mécanisme de sécurité de contrôle d’accès (MAC) obligatoire implémenté dans le noyau.
Seulement 3 étapes à suivre:
chcon -R -t httpd_sys_content_t /var/www/html/wordpress
chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress
Aucun redémarrage à partir du serveur ou redémarrer à partir de tout démon nécessaire.
Je ne dirai pas que cela aide tout le monde, mais pour ceux qui n'ont pas désactivé SELinux, cela devrait être un soulagement.
À votre santé
Remarque: Veuillez vous adapter à vos propres besoins (chemin d'accès à WordPress)
edit: assurez-vous de supprimer la ligne define("FS_METHOD", "direct");
lorsqu'elle est/a été utilisée dans wp-config.php
car c'est absolument impossible lorsque les lignes de code ci-dessus font ce que vous souhaitez.