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

29

Je suis en train de modifier les autorisations de fichiers «WordPress Codex , mais quand j'essaie de mettre à jour et / ou d'installer pluginet / ou de themepasser wp-admin, je reçois ce qui suit:

Pour effectuer l'action demandée, WordPress doit accéder à votre serveur Web. Veuillez saisir 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/
# 

httpdfonctionne comme 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
$ 

Je voudrais pouvoir exécuter l'action demandée ( installet / ou update) /wp-admin sans informations d'identification FTP.

Comment puis je faire ça?

alexus
la source
1
S'agit-il d'une installation localhost? Si oui, voir: wordpress.stackexchange.com/questions/19649/…
Greg McMullen
1
@GregMcMullen non, ce n'est PAS l' installation de l'hôte local et la réponse "acceptée" du lien que vous commentez est de changer récursivement la propriété d'un répertoire wordpress en nobody- cela ne fonctionnera pas pour moi en raison des httpdexécutions en tant que apache.
alexus
@alexus Il semble que vos fichiers appartiennent actuellement à root.apache. Avez-vous essayé apache.apache au lieu de personne?
Tim Malone
@TimMalone définissant files / directory comme apache.apacheou root.apachene ferait aucune différence, tant que httpds'exécute apacheet apacheque s uidfait partie du apache gidgroupe, c'est toujours la même chose, car mes autorisations sont définies sur g+w.
alexus
@alexus Ok, autre chose à essayer - définissez FS_METHOD sur 'direct' dans wp-config.php ( codex.wordpress.org/… )
Tim Malone

Réponses:

53

Ajoutez ce qui suit à wp-config.php:

define( 'FS_METHOD', 'direct' );

Faites moi savoir comment ça marche pour vous.

Narendra Solanki
la source
travaillé pour moi, sauf si vous avez de mauvaises autorisations dans le système de fichiers. Btw je l'ai ajouté tout en haut du wp-config.php
Toskan
Assurez-vous de lire le post lié à Alexus avant d'utiliser cette méthode. Cette méthode fonctionne certainement (elle a résolu le problème pour moi), mais vous ne devez certainement pas utiliser cette méthode dans un environnement d'hébergement partagé ou tout environnement à risque où vous pourriez compromettre la sécurité en faisant cela.
JamesHoux
16

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 le même.

Exécutez la commande suivante dans votre terminal / Putty / Commandline Prompt après vous être connecté à votre serveur via SSH:

sudo chown -R apache:apache /var/www/html

Consultez cet article pour plus de détails.

Syamraj K
la source
les autorisations sont bien,
relisez
3
chown: utilisateur invalide: 'apache: apache'
numediaweb
2
N'oubliez pas qu'Apache peut être différents utilisateurs dans différentes versions de Linux. Vous pouvez donc essayer les groupes <nom_utilisateur> et voir s'il présente des erreurs ou non, car l'utilisateur et le groupe pour Apache sont généralement les mêmes. Utilisez ensuite le bon utilisateur. Le plus courant dans Ubuntu est "www-data: www-data" ou "www: www" pour la représentation des fichiers Apache.
MontyThreeCard
3

Même s'il est tout à fait correct d'avoir la propriété comme root:apacheavec les autorisations 775 et httpd pour fonctionner comme apache, Wordpress n'aime pas cela. Il veut que le propriétaire soit apache, selon 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 des mises à jour (j'ai vérifié cela en mettant à jour le code d'un plugin depuis Wordpress, et cela a fonctionné).

Remarque Je n'ai pas parcouru le code en détail, ce n'est que mon interprétation rapide. J'ai eu le même problème et une fois que j'ai changé d'utilisateur: group pour que l'utilisateur httpd soit également le propriétaire du fichier, il ne demandait plus les informations d'identification FTP.

w00t
la source
Ouaip, changer le propriétaire pour www-datatravailler pour moi. WordPress drôle!
ankush981
trouvaille intéressante, j'examinerai cela ... merci +1 de ma part)
alexus il y a
1

Ce n'est pas une réponse directe, mais il faut probablement le dire - c'est un problème que vous devez éviter de résoudre à moins que vous ne parliez d'un développement local, auquel 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 en cours d'exécution pourra également le faire. Le risque est tellement plus grand que la commodité de gagner quelques secondes en n'ayant pas à taper les informations d'identification ftp.

Mark Kaplun
la source
0

Bien que la question ne soit plus aussi nouvelle, je veux ajouter mes deux cents sur cette question également.

Beaucoup de ppl 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é. Cela va trop loin pour expliquer ce qu'est SELinux et ce qu'il fait. Pour info, l'introduction commence par:

Linux sécurisé (SELinux) est un mécanisme de sécurité de contrôle d'accès obligatoire (MAC) 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 une 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émarrage à partir de n'importe quel 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 (ce qui signifie chemin vers WordPress)

modifier: assurez-vous de supprimer la ligne define("FS_METHOD", "direct");lorsqu'elle est / a été utilisée wp-config.phpcar c'est absolument un non lorsque les lignes de code ci-dessus font ce que vous voulez.

Charles
la source
0

Dans mon cas, j'ai résolu ce problème en revenant du mode GIT au mode FTP.

Plus d'avertissement.

Peut-être que cela aidera quelqu'un d'autre aussi.

MarkPraschan
la source