649 votes

Puis-je installer/mettre à jour des plugins WordPress sans fournir d'accès FTP ?

J'utilise WordPress sur mon serveur live qui n'utilise que SFTP en utilisant un SSH clé.

Je veux installer et mettre à niveau des plugins, mais il semble que vous deviez entrer votre login FTP pour installer les plugins. Existe-t-il un moyen d'installer et de mettre à niveau des plugins en téléchargeant manuellement les fichiers au lieu de laisser WordPress s'occuper de tout le processus ?

4 votes

Oui, vous pouvez. Il vous suffit d'utiliser le panneau de contrôle ou tout autre outil de téléchargement de fichiers dont vous disposez ; téléchargez le plugin zippé et extrayez-le dans le répertoire wp-content/plugins/ ensuite, à partir du tableau de bord wp, allez dans l'onglet plugins et activez-le.

0 votes

Si vous utilisez un VPS devrait essayer ça : stackoverflow.com/a/44137965/3160597

0 votes

@WPDev Si votre commentaire était listé comme une réponse, je l'upvote à nouveau, c'était le plus utile.

843voto

stereoscott Points 5647

WordPress ne vous demandera les informations de connexion FTP lors de l'installation de plugins ou d'une mise à jour de WordPress que s'il ne peut pas écrire sur le site Web de l'entreprise. /wp-content directement. Sinon, si votre serveur web a accès en écriture aux fichiers nécessaires, il se chargera automatiquement des mises à jour et de l'installation. Cette méthode ne nécessite pas d'accès FTP/SFTP ou SSH, mais elle exige que des autorisations de fichiers spécifiques soient configurées sur votre serveur Web.

Il essaiera plusieurs méthodes dans l'ordre, et se rabattra sur FTP si les méthodes Direct et SSH ne sont pas disponibles.

https://github.com/WordPress/WordPress/blob/4.2.2/wp-admin/includes/file.php#L912

WordPress va essayer d'écrire un fichier temporaire dans votre /wp-content répertoire. Si cela réussit, il compare la propriété du fichier avec son propre uid, et s'il y a une correspondance, il vous permettra d'utiliser la méthode "directe" pour installer des plugins, des thèmes ou des mises à jour.

Maintenant, si pour une raison quelconque, vous ne voulez pas compter sur la vérification automatique de la méthode de système de fichiers à utiliser, vous pouvez définir une constante, 'FS_METHOD' dans votre wp-config.php qui est soit 'direct', 'ssh', 'ftpext' or 'ftpsockets' et il utilisera cette méthode. Gardez à l'esprit que si vous définissez cette option sur "direct", mais que votre utilisateur Web (le nom d'utilisateur sous lequel votre serveur Web fonctionne) ne dispose pas des droits d'écriture appropriés, vous recevrez une erreur.

En résumé, si vous ne voulez pas (ou ne pouvez pas) modifier les autorisations sur wp-content pour que votre serveur Web ait des droits d'écriture, ajoutez ceci à votre fichier wp-config.php :

define('FS_METHOD', 'direct');

Les permissions sont expliquées ici :

41 votes

J'ai dû faire : sudo chown -R www-data wp-content ainsi qu'accorder les droits d'écriture

5 votes

L'utilisation de getmyuid à la ligne 876 est sans doute incorrect ici, car il renvoie l'UID du propriétaire du script, et non de l'exécuteur du script. Je pense que cela devrait être posix_getuid .

0 votes

C'était exactement mon problème. Après avoir corrigé les autorisations à l'aide de CHOWN, tout était réglé. Merci pour votre aide !

287voto

Ryan Wiancko Points 1235

Comme indiqué précédemment, aucune des corrections permanentes ne fonctionne plus. Vous devez modifier les perms en conséquence ET mettre ce qui suit dans votre fichier wp-config.php :

define('FS_METHOD', 'direct');

14 votes

Même si j'avais les autorisations correctes pour que le serveur web puisse écrire dans le répertoire des plugins et dans le répertoire wp-content, ce réglage a permis à l'administrateur de ne pas demander les paramètres FTP/SFTP pour la mise à jour des plugins. Merci. Cela a parfaitement fonctionné.

9 votes

J'ai dû le faire explicitement aussi.

5 votes

Depuis quand est-ce que c'est une obligation ?

119voto

sufinawaz Points 576

Je voulais juste ajouter qu'il ne faut JAMAIS définir l'option wp-content l'autorisation ou la permission de tout dossier à 777 .

C'est ce que j'ai dû faire pour :

1) J'ai défini la propriété du dossier wordpress (récursivement) à l'utilisateur apache, comme suit :

# chown -R apache wordpress/

2) J'ai changé le groupe propriétaire du dossier wordpress (récursivement) pour le groupe apache, comme ceci :

# chgrp -R apache wordpress/

3) donner au propriétaire tous les privilèges sur le répertoire, comme ceci :

# chmod u+wrx wordpress/*

Et ça a fait le travail. Mon wp-content Le dossier a 755 permissions, btw.

Version TL;DR :

# chown -R apache:apache wordpress
# chmod u+wrx wordpress/*

11 votes

Définir votre wordpress comme appartenant à apache est aussi mauvais que de définir 777. Le résultat est le même : tout php script peut maintenant modifier vos fichiers wordpress. La meilleure option est de faire un chown apache:apache temporaire, d'installer vos mises à jour et de refaire un chown vers l'original OU d'utiliser l'astuce ssh/ftp.

15 votes

Je ne suis pas d'accord. Ce n'est pas tout à fait la même chose que de mettre la valeur 777. Tout utilisateur de la machine aurait un accès en écriture si vous définissez les autorisations à 777. C'est un problème en soi. Et si vous avez raison de dire qu'Apache peut maintenant modifier les fichiers php, ce serait l'intention première (afin de mettre à jour ou d'installer quoi que ce soit). Si quelqu'un parvient à placer des fichiers php malveillants sur le serveur, c'est un tout autre problème et le chowning à différents utilisateurs n'y changera pas grand-chose.

2 votes

Merci, cela m'a sauvé la mise aussi, car je n'ai pas de privilèges FTP, mais seulement un accès Root.

69voto

Lamy Points 1127
  1. En wp-config.php ajouter define('FS_METHOD', 'direct');
  2. Rendre le serveur accessible en écriture aux répertoires wp-content/ , wp-content/plugins/ .
  3. Installez le plugin (copiez le répertoire du plugin dans le dossier de l'utilisateur). wp-content/plugins dir).

Fonctionne sur la version 3.2.1

4 votes

Fonctionne aussi sur la version 4.0.

1 votes

Vous devez ajouter cette option mais vous n'avez qu'à changer les perms sur wp-content/plugins

0 votes

Il s'agit explicitement des étapes à suivre pour installer un plugin sans être invité à fournir des informations FTP. Vous pouvez prendre les mesures pour renforcer WordPress avec des permissions, et ensuite faire ces 2 changements, et vous devriez rester en sécurité.

22voto

JacquelineIO Points 121

Afin d'activer l'utilisation de SSH2 pour vos mises à jour et vos téléchargements de thèmes, vous devez générer vos clés SSH et installer le module PHP SSH. WordPress détectera alors que vous disposez de SSH2 et vous verrez une option différente (SSH2) s'afficher lors d'un téléchargement/mise à jour.

1.) Assurez-vous que vous avez le module PHP installé pour debian c'est :

sudo apt-get install libssh2-php

2.) Générer les clés SSH, l'ajout d'une phrase de passe est facultatif :

ssh-keygen
cd  ~/.ssh
cp id_rsa.pub authorized_keys

3.) Changez la permission pour que WordPress puisse accéder à ces clés :

cd ~
chmod 755 .ssh
chmod 644 .ssh/*

Maintenant vous aurez l'option SSH2 lorsque vous ferez un téléchargement/mise à jour/plugin. WP SSH Connection

4.) Pour plus de facilité, vous pouvez configurer les valeurs par défaut dans votre système d'information. wp-config.php et cela va pré-populer les informations d'identification SSH dans la fenêtre de téléchargement de WordPress.

define('FTP_PUBKEY','/home/<user>/.ssh/id_rsa.pub');
define('FTP_PRIKEY','/home/<user>/.ssh/id_rsa');
define('FTP_USER','<user>');
define('FTP_PASS','passphrase');
define('FTP_HOST','domain.com');

Le "passphrase" est facultatif, si vous ne configurez pas de passphrase lors de la création de l'entreprise. ssh-kengen ; alors ne l'ajoutez pas wp-config.php

Cela a résolu mon problème. Et je n'ai pas eu à faire le chown du tout. Mais j'ai vu cette méthode référencée dans d'autres endroits.

Références :

0 votes

Je ne suis pas un expert en sécurité, et je réalise que wordpress a inclus cette capacité et a pensé que c'était OK.... mais je ne me sens pas bien à ce sujet.... 1. avoir un compte ssh sans phrase de passe, (quiconque obtient la clé privée peut alors se connecter à distance à tout moment sans mot de passe) et 2. avoir une phrase de passe stockée en clair (voir 1). cela me rappelle rsh, dépendant de l'idée que "personne n'aura accès à mes fichiers locaux" pour protéger le mot de passe réseau d'un système.

0 votes

Je suis sûr que vous pouvez générer la phrase de passe et ne PAS l'ajouter à wp-config.php, il vous suffira alors de la saisir lorsque vous arriverez à la boîte de dialogue Informations de connexion.

0 votes

L'utilisation d'une clé privée non cryptée de cette manière constitue une énorme faille de sécurité. Mais vous pouvez atténuer le problème en ajoutant un "from=whatever" à la ligne correspondante dans authorized_keys.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X