web-dev-qa-db-fra.com

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

J'utilise WordPress sur mon serveur live qui utilise uniquement SFTP en utilisant une touche SSH

Je souhaite installer et mettre à niveau des plugins, mais il semble que vous deviez entrer votre identifiant 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 gérer l'intégralité du processus? 

506
user77413

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

Il essaiera différentes méthodes dans l’ordre et retombera 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 répertoire /wp-content. Si cela réussit, il compare la propriété du fichier à son propre uid et, s'il y a correspondance, cela vous permettra d'utiliser la méthode 'directe' d'installation de plugins, de thèmes ou de mises à jour.

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

En résumé, si vous ne souhaitez pas (ou ne pouvez pas) modifier les autorisations sur wp-content afin que votre serveur Web dispose d'autorisations en écriture, ajoutez ceci dans votre fichier wp-config.php:

define('FS_METHOD', 'direct');

Autorisations expliquées ici: 

709
stereoscott

Comme indiqué précédemment, aucun des correctifs permanents ne fonctionne plus. Vous devez modifier les permanentes en conséquence ET mettre les informations suivantes dans votre wp-config.php:

define('FS_METHOD', 'direct');
232
unc0nnected

Je voulais juste ajouter que vous ne devez JAMAIS définir l'autorisation wp-content ou l'autorisation d'un dossier sur 777

C'est ce que je devais faire pour:

1) Je règle (récursivement) la propriété du dossier wordpress sur l'utilisateur Apache, comme suit:

# chown -R Apache wordpress/

En cas d'Ubuntu, Mint ou Debian # chown -R www-data:www-data wordpress/

2) J'ai changé la propriété du groupe du dossier wordpress (récursivement) en groupe Apache, comme suit:

# chgrp -R Apache wordpress/

Passer cette étape pour Ubuntu, Mint ou Debian

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

# chmod u+wrx wordpress/*

Et cela a fait le travail. Mon dossier wp-content a les autorisations 755, btw.

Version TL; DR:

# chown -R Apache:apache wordpress
# chmod u+wrx wordpress/*
95
sufinawaz
  1. Dans wp-config.php ajouter define('FS_METHOD', 'direct');
  2. Rendez le serveur accessible en écriture dans les répertoires wp-content/, wp-content/plugins/.
  3. Installez le plugin (copiez le répertoire du plugin dans le répertoire wp-content/plugins).

Travaillé sur la version 3.2.1

68
Lamy

Juste un changement rapide en wp-config.php

define('FS_METHOD','direct');

C’est fini, profitez de vos mises à jour wordpress sans ftp !

Méthode alternative:

Il y a des hôtes qui empêcheront cette méthode de fonctionner pour faciliter votre mise à jour de WordPress. Heureusement, il existe un autre moyen de empêchez cet organisme nuisible de vous demander votre nom d'utilisateur et votre mot de passe FTP.

Encore une fois, après les déclarations de connexion MYSQL dans votre fichier wp-config.php, ajoutez ce qui suit:

define("FTP_Host", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");
33
ravi patel

Afin de permettre l'utilisation de SSH2 pour vos mises à jour et vos envois de thèmes, vous devez générer vos clés SSH et installer le module PHP SSH. Ensuite, WordPress détectera que vous avez SSH2 disponible et vous verrez une option différente (SSH2) affichée lors d’un téléchargement/d’une mise à niveau.

1.) Assurez-vous que le module PHP installé pour Debian est:

Sudo apt-get install libssh2-php

2.) Générer des clés SSH, l'ajout d'une phrase secrète est facultatif:

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

3.) Modifiez l'autorisation de sorte que WordPress puisse accéder à ces clés:

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

Maintenant, vous aurez l'option SSH2 lorsque vous effectuez un téléchargement/une mise à niveau/un plugin .WP SSH Connection

4.) Pour plus de facilité, vous pouvez configurer les valeurs par défaut dans votre wp-config.php, ce qui pré-remplira les informations d'identification SSH dans la fenêtre de téléchargement 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');

La "phrase secrète" est facultative, si vous ne configurez pas de phrase secrète pendant ssh-kengen; alors ne l'ajoutez pas dans wp-config.php

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

Références:

21
JacquelineIO

Habituellement, vous pouvez simplement télécharger votre plugin dans le répertoire wp-content\plugins. Si vous n'avez pas accès à ce répertoire via SFTP, j'ai bien peur que vous soyez bloqué.

18
Toby Allen

Vous pouvez l'obtenir très facilement en tapant la commande suivante sur la commande promt

Sudo chown -R www-data:www-data your_folder_name

ou copiez et collez le code suivant dans votre fichier wp-config.php. 

define('FS_METHOD', 'direct');

Où "your_folder_name" est le dossier dans lequel WordPress est installé dans ce dossier.

16
Roman

Ajoutez le code suivant à wp-config

define('FS_METHOD', 'direct');

FS_METHOD force la méthode du système de fichiers. Ce ne devrait être que direct, ssh2, ftpext ou ftpsockets. En règle générale, vous ne devriez changer cela que si vous rencontrez des problèmes de mise à jour. Si vous le changez et que cela ne vous aide pas, changez-le/supprimez-le. Dans la plupart des cas, le réglage sur 'ftpsockets' fonctionnera si la méthode automatiquement choisie ne fonctionne pas.

(Préférence principale) "direct" l'oblige à utiliser les requêtes d'E/S de fichier directes de PHP, ce qui entraîne de nombreux problèmes de sécurité sur les hôtes mal configurés. Cette option est automatiquement choisie si nécessaire.

(Secondary Secondary) "ssh2" force l'utilisation de l'extension SSH PHP s'il est installé

(3ème préférence) "ftpext" consiste à forcer l'utilisation de l'extension FTP PHP pour l'accès FTP, et enfin

(4ème préférence) "ftpsockets" utilise la classe de classes PHP pour l'accès FTP.

Pour plus d'informations, visitez: http://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants

15

Exécutez le code suivant dans le terminal

Sudo chown -R www-data /var/www

Pour plus de détails, visitez Wordpress sur les plugins d'installation Ubuntu sans accès FTP

15
Bikram Shrestha

Si vous êtes sur Ubuntu , une solution rapide qui fonctionne pour moi consiste à donner la propriété à Apache user (www-data par défaut) comme suit:

cd your_wordpress_directory
Sudo chown -R www-data wp-content
Sudo chmod -R 755 wp-content
13
mikermcneil

WordPress 2.7 vous permet de télécharger directement un fichier Zip (il y a un lien au bas de la page des plugins) - aucun accès FTP nécessaire. Ceci est une nouvelle fonctionnalité de la version 2.7, et cela fonctionne uniquement pour les plugins (pas encore les thèmes).

11
D. Lambert

Essaye ça

1) Dans le fichier wp-config.php, ajoutez define ('FS_METHOD', 'direct');

2) Définissez le répertoire "wp-content" sur 777 pour pouvoir écrire.

3) Maintenant, installez le plugin.

9
Raj

Ressusciter un ancien fil de discussion, mais il existe un nouveau plugin fantastique appelé SSH SFTP Updater Support qui ajoute des fonctionnalités SFTP sans avoir à modifier votre fichier wp-config.php. En outre, l'implémentation SFTP de Wordpress repose sur des modules PHP quelque peu obscurs qui ne sont souvent pas activés sur les serveurs; ce plugin contient un plugin SFTP PHP différent, vous évitant ainsi de configurer quoi que ce soit du côté d'Apache. 

J'avais eu beaucoup de problèmes à faire fonctionner le support SFTP - ce plugin les a tous résolus et est tout simplement fantastique.

9
chrismanderson

Oui, installez directement le plugin dans WordPress.

  1. Copiez le dossier du plugin et collez-le dans le dossier du plugin WordPress.
  2. allez au côté admin (/ test/wp-admin) puis après allez sur le lien du plugin et vérifiez le nom du plugin.
  3. Activez le plugin pour installer le plugin facilement.

autre option

  1. créez le fichier Zip pour le code du plugin.
  2. allez au côté admin (/ test/wp-admin) puis après allez sur le lien du plugin puis cliquez sur le bouton ajouter nouveau puis parcourez le dossier du plugin zip et installez le plugin puis sortez l'option activer le plugin, alors activez le plugin et activer le plugin.
8
Maulik patel

La réponse de stereointeractive couvre toutes les options. Je voulais juste mentionner un autre moyen d’utiliser FTP. Je devine que la raison pour laquelle vous n'autorisez pas l'accès FTP est pour la sécurité. Une façon de résoudre ces problèmes de sécurité consiste à exécuter votre serveur FTP uniquement à l’écoute sur 127.0.0.1. 

Cela vous permet d’utiliser FTP à partir de WordPress et vous pourrez installer des plugins sans l’exposer au reste du monde. Ceci peut également être appliqué à d'autres applications Web populaires telles que Joomla! et Drupal. C’est ce que nous faisons avec nos appliances BitNami et serveurs cloud et fonctionne très bien.

8
kaysa

Je recommande également le plug-in SSH SFTP Updater Support . Je viens de résoudre tous mes problèmes aussi ... surtout en ce qui concerne la suppression des plugins via l’administrateur. Installez-le simplement de la manière habituelle, et la prochaine fois que WordPress vous demandera des détails FTP, vous aurez des champs supplémentaires pour copier/coller votre clé SSH privée ou télécharger votre fichier PEM.

Le seul problème que j'ai, c'est de le rappeler à la clé (essayé les deux méthodes). Je n'aime pas l'idée de devoir le trouver et le saisir à chaque fois que je dois supprimer un plugin. Mais au moins, c'est une solution solide pour le moment.

8
Mark Jeldi
  1. passer de php_mod à fastcgi avec cgi & SuEXEC activé 

ne pas oublier si cela ne fonctionne pas essayer de changer

  1. change le contenu de wp en 775 en tant que root 

    chmod -R 775 ./wp-content

  2. ajouter à wp-config.php

    define ('FS_METHOD', 'direct');

j'espère que ca fonctionne 

8
Zaman

Nous utilisons SFTP avec SSH (sur nos serveurs de développement et réels) et j’ai essayé (pas trop fort) d’utiliser la fonctionnalité de téléchargement WordPress. Je suis d'accord avec Toby, chargez vos plugins dans le répertoire wp-content/plugins, puis activez-les à partir de là.

6
Schoffelman

Il est possible d'utiliser SFTP ou SSH pour mettre à jour automatiquement les plugins dans WordPress, mais vous devez avoir l'extension ssh2 pecl. Vous pouvez trouver comment le faire en utilisant le tutorial suivant

6
Sudar

J'ai vu beaucoup de gens recommander de définir l'autorisation sur 777. J'avais le même problème il y a deux jours et je n'ai fait que l'ajouter à wp-content

define('FS_METHOD', 'direct');

et 

définir l'autorisation à 775 pour le dossier du plugin

Cela a résolu mon problème de demande de login/mot de passe d'accès FTP.

Avant cela, je devais ajouter le plugin manuellement en ajoutant le fichier .Zip au dossier du plugin, puis aller à wp-admin/plugins et je devais l’installer.

5
ZainZaheer

Essayez ceci Vérifiez si la permission correcte est donnée au dossier wp-content.

Editez le wp-config.php ajoutez la ligne suivante 

define('FS_METHOD', 'direct');

chmod le répertoire "wp-content" vers www-data pour un accès complet.

Maintenant, essayez d'installer le plugin.

3
Javeed Shakeel

configurer une connexion ftp ou même une connexion SFTP ou chmod 777 est une mauvaise façon d’agir autrement que dans un environnement local. L'ouverture même d'une méthode SFTP introduit plus de risques de sécurité qui ne sont pas nécessaires.

ce qu'il faut, c'est une autorisation en écriture pour/wp-content/uploads &/wp-content/plugins/par le propriétaire de ces répertoires. (linux ls -la vous montrera la propriété).

L'utilisateur par défaut d'Apache qui s'exécute est www-data.

chmod 777 permet à n'importe quel utilisateur de la machine de modifier ce fichier, pas uniquement à l'utilisateur du thread Apache/php.

SFTP, si vous ne l'utilisez pas déjà, introduira un autre point d'échec possible provenant d'une source externe. Alors que vous n’avez besoin que de l’utilisateur local exécutant le processus Apache/php pour atteindre l’objectif.

N'ayant vu personne expliquer ces arguments, j'ai pensé proposer ces informations pour vous aider à résoudre nos problèmes de sécurité en ligne WP.

2
Jason

S'il vous plaît ajouter define('FS_METHOD','direct'); dans wo-config.php

1
Gulshan kumar

Voici une méthode simple.

Exécutez les commandes suivantes.

Cela activera votre module mod_rewrite pour Apache

$Sudo a2enmod rewrite

Cette commande changera le propriétaire du dossier en www-data

$Sudo chown -R www-data [Wordpress Folder Location]

Après avoir exécuté les commandes ci-dessus, vous pouvez installer n’importe quel thème sans FTP.

1

Oui tu peux le faire.

Vous devez ajouter

define('METHOD','direct');

dans votre config wp. Mais cette méthode ne sera pas préférable car elle a des problèmes de sécurité.

Merci,

0
Riyaz

WPCLI est le meilleur moyen d’installer le plugin à l’aide de SSH. 

Notez que l'accès SSH est obligatoire pour utiliser les commandes CLI WP. Avant de l'utiliser, vérifiez si la CLI WP est installée sur votre serveur ou machine d'hébergement. 

Comment vérifier: wp --version [La version de wp cli sera affichée]

S'il n'est pas installé, comment l'installer: Avant d'installer WP-CLI, veuillez vous assurer que l'environnement répond à la configuration minimale requise:

Environnement de type UNIX (OS X, Linux, FreeBSD, Cygwin); support limité dans l'environnement Windows . PHP 5.4 ou version ultérieure WordPress 3.7 ou version ultérieure. Les versions antérieures à la dernière version de WordPress peuvent avoir une fonctionnalité dégradée

Si les points ci-dessus sont satisfaits, veuillez suivre les étapes suivantes: URL de référence: WPCLI

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
[ download the wpcli phar ]

php wp-cli.phar --info [ check whether the phar file is working ]

chmod +x wp-cli.phar [ change permission ]
Sudo mv wp-cli.phar /usr/local/bin/wp [ move to global folder ]
wp --info [ to check the installation ]

Maintenant, WP CLI est prêt à être installé. 

Maintenant, vous pouvez installer n’importe quel plugin disponible dans WordPress.org en utilisant les commandes suivantes: 

wp install plugin plugin-slug
wp delete plugin plugin-slug
wp deactivate plugin plugin-slug

NOTE: wp cli ne peut installer que les plugins disponibles sur wordpress.org 

0
Tristup