web-dev-qa-db-fra.com

pour effectuer l'action demandée, wordpress a besoin d'accéder à votre serveur Web. veuillez entrer votre ftp

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-adminsans informations d'identification FTP.

Comment puis je faire ça?

21
alexus

Ajoutez ce qui suit à wp-config.php:

define( 'FS_METHOD', 'direct' );

Faites moi savoir comment ça marche pour vous.

42
Narendra Solanki

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.

12
Syamraj K

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.

1
Mark Kaplun

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.

1
w00t

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.

0
MarkPraschan

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:

  • 1 Ouvrez un terminal (ou accédez au serveur via SSH)
  • 2 Ajouter la ligne de code suivante chcon -R -t httpd_sys_content_t /var/www/html/wordpress
  • 3 Ajouter la deuxième ligne de code 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.

0
Charles