FTPアクセスを提供せずにWordPressプラグインをインストール/更新できますか?


565

私が使用していますワードプレスをのみ使用し、私のライブサーバー上でSFTPを使用したSSHキーを。

プラグインをインストールしてアップグレードしたいのですが、プラグインをインストールするにはFTPログインを入力する必要があるようです。WordPressにプロセス全体を処理させる代わりに、ファイルを手動でアップロードしてプラグインをインストールおよびアップグレードする方法はありますか?


3
はい、できます。単にcPanelまたは使用している他のファイルアップロードツールを使用するだけです。圧縮されたプラグインをアップロードしwp-content/plugins/、そこにwpダッシュボードから抽出し、プラグインタブに移動して有効にします。
WPDev

を使用している場合はVPS、これを試してください:stackoverflow.com/a/44137965/3160597
azerafati

@WPDevあなたのコメントが回答としてリストされた場合、私はそれを再度賛成しますが、それが最も役に立ちました。
Tensigh

回答:


772

WordPressは、プラグインまたはWordPressのアップデートを/wp-content直接書き込めない場合に、インストールを試行している間、FTP接続情報の入力のみを求めます。それ以外の場合、Webサーバーが必要なファイルへの書き込みアクセス権を持っていると、更新とインストールが自動的に行われます。この方法では、FTP / SFTPまたはSSHアクセスが必要ですが、Webサーバーで特定のファイル権限を設定する必要があります。

さまざまな方法を順番に試行し、直接およびSSHの方法が使用できない場合はFTPにフォールバックします。

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

WordPressは一時ファイルを/wp-contentディレクトリに書き込もうとします。これが成功した場合、ファイルの所有権を独自のuidと比較し、一致する場合は、プラグイン、テーマ、または更新をインストールする「直接」方式を使用できるようにします。

ここで、何らかの理由で、使用するファイルシステムメソッドの自動チェックに依存したくない場合は'FS_METHOD'wp-config.phpファイルに定数を定義できます'direct', 'ssh', 'ftpext' or 'ftpsockets'。これは、どちらかであり、そのメソッドを使用します。これを「direct」に設定しても、Webユーザー(Webサーバーを実行するユーザー名)に適切な書き込み権限がない場合は、エラーが発生することに注意してください。

要約すると、wp-contentのアクセス許可を変更したくない場合(または変更できない場合)、Webサーバーに書き込みアクセス許可を付与する場合は、これをwp-config.phpファイルに追加します。

define('FS_METHOD', 'direct');

ここで説明する権限:


30
私がしなければならなかった:sudo chown -R www-data wp-contentと書き込み権限の付与
mikermcneil

5
getmyuidオンラインで876を使用すると、スクリプトエグゼキュータではなく、スクリプト所有者のUIDが返されるため、間違いなく間違いです。私はそうあるべきだと思いますposix_getuid
cmbuckley

7
このアプローチのセキュリティ上の意味は何ですか?
Jahmic

1
phpを実行しているユーザーを確認したい場合は、これを使用 print_r(posix_getpwuid(posix_geteuid())); できwp-configます。ファイルにコードを追加できます。
Ivan V. 14年

3
chown -R www-data wordpress/wp-content私にとってはchown -R www-data wordpressうまく
Martin

252

前述のように、パーマの修正は機能しません。あなたはそれに応じてパーマを変更する必要があり、以下をあなたの中に入れてくださいwp-config.php

define('FS_METHOD', 'direct');

11
Webサーバーがプラグインディレクトリとwp-contentディレクトリに書き込むことができるように適切な権限を持っていたとしても、この設定により修正されたため、管理者はプラグインを更新するためのFTP / SFTP設定を要求しませんでした。ありがとうございました。完璧に働きました。
Sean McCleary 2012年

7
私も明示的にこれを行わなければなりませんでした。
julien_c

5
彼らはいつこれを要件にしましたか?
danjp

Ubuntu 12.04のdebianパッケージによってインストールされたWPでも、この設定に依存する必要がありました。それ以外の場合、権限は問題なく、wp-contentにはグループwww-data ...に対するrwx権限があります
alci

2
次のものがwp-config.phpファイルに含まれていないことを確認してください。define( 'FS_METHOD'、 'ftpext'); この場合、define( 'FS_METHOD'、 'direct');を配置します。ファイルの下部にあるは機能しません。define( 'FS_METHOD'、 'ftpext');を消去するかコメント化する必要があります。これは、FTPを必要とする別のサーバーから移行した場合に特に発生する可能性があります。
Doug

104

追加したかったのwp-contentは、フォルダのアクセス許可を1つに設定しないでください777

これは私がしなければならなかったことです:

1)以下のように、wordpressフォルダの所有権を(再帰的に)apacheユーザーに設定します。

# chown -R apache wordpress/

2)以下のように、wordpressフォルダのグループ所有権を(再帰的に)apacheグループに変更しました。

# chgrp -R apache wordpress/

3)次のように、所有者にディレクトリに対する完全な権限を付与します。

# chmod u+wrx wordpress/*

そしてそれは仕事をしました。私のwp-contentフォルダには755権限があります。

TL; DRバージョン:

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

11
ワードプレスをapacheが所有するように設定することは、777を設定することと同じくらい悪いことです。結果は同じです。どのphpスクリプトもワードプレスファイルを変更できるようになります。最良のオプションは、apache:apacheを一時的に停止し、更新をインストールして元に戻すか、ssh / ftpトリックを使用することです
2013年

11
同意しません。777に設定するのとはまったく同じではありません。アクセス許可を777に設定すると、マシンのすべてのユーザーが書き込みアクセス権を持つことになります。それ自体が問題です。そして、あなたが正しい間、そのapacheは今すぐphpファイルを変更することができます、それはそもそも(何かを更新またはインストールするための)意図です。誰かが悪意のあるphpファイルをサーバーに配置できた場合、それはまったく新しい問題であり、別のユーザーに依存することはほとんど役に立ちません。
sufinawaz 2013年

2
ありがとう、私はFTP特権を持っていないので私の日も救いましたが、rootアクセスのみです。
shasi kanth 14

4
これは私を助けた唯一のものです!Wordpressサイトを何年も開発してきたおかげで、これはまだ古典的な問題です!
acidghost 2014

1
通常とは異なるビルドでWordPressを実行している場合は、これをPHPファイルに貼り付けて、Apacheが誰として実行されているかを確認します(たとえば、ubuntuはwww-dataです)。<?php echo exec( 'whoami'); ?>
2014

70
  1. wp-config.php追加define('FS_METHOD', 'direct');
  2. 書き込み可能なディレクトリサーバーを作成しwp-content/wp-content/plugins/
  3. プラグインをインストールします(プラグインdirをdirにコピーしますwp-content/plugins)。

バージョン3.2.1で動作しました


4
バージョン4.0でも動作しました。
Meetai.com 2014

1
このオプションを追加する必要がありますが、あなただけのwp-コンテンツ/プラグインにパーマを変更する必要がある
ジョンKloian

これは、FTP情報の入力を求められることなくプラグインをインストールするために必要な手順です。権限を使用してWordPressを強化する手順を実行してから、これらの2つの変更を行うことができます。ほとんどの場合、安全性を維持する必要があります。
bozdoz 2016


34

wp-config.phpを変更するだけです

define('FS_METHOD','direct');

それだけです、ftpなしでワードプレスの更新お楽しみください!

別の方法:

WordPressの更新を容易にするためにこのメソッドが機能しないようにするホストがあります。幸い、この害虫がFTPユーザー名とパスワードの入力を要求しないようにする別の方法があります。

ここでも、wp-config.phpファイルのMYSQLログイン宣言の後に、次の行を追加します。

define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");

22

アップデートとテーマのアップロードにSSH2を使用できるようにするには、SSHキーを生成し、PHP SSHモジュールをインストールする必要があります。次に、WordPressはSSH2が利用可能であることを検出し、アップロード/アップグレードを実行すると、別のオプション(SSH2)が表示されます。

1.)debian用のPHPモジュールがインストールされていることを確認します。

sudo apt-get install libssh2-php

2.)SSH鍵を生成し、パスフレーズの追加はオプションです。

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

3.)WordPressがこれらのキーにアクセスできるように権限を変更します。

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

これで、アップロード/アップグレード/プラグインを実行するときにSSH2オプションが表示されます。 WP SSH接続

4.)さらに簡単にするために、デフォルトをに設定できます。wp-config.phpこれにより、WordPressのアップロードウィンドウにSSH認証情報が事前に入力されます。

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');

中にパスフレーズを設定しない場合、「パスフレーズ」はオプションですssh-kengen。それを追加しないでくださいwp-config.php

これで私の問題は解決しました。そして、私はまったくする必要がありませんでしたchown。しかし、このメソッドが他の場所で参照されているのを見てきました。

参照:


私はセキュリティの専門家ではありません。ワードプレスにこの機能が含まれていることを理解し、それは問題ないと思っていました。...しかし、私はこれについて気分がよくありません...秘密鍵は、パスワードなしでいつでもリモートでログインできます。2。パスフレーズをプレーンテキストで保存します(1を参照)。システムのネットワークパスワードを保護するために「ローカルファイルに誰もアクセスできない」という考えに応じて、rshを思い出させます。
明るい

パスフレーズを生成し、それをwp-config.phpに追加しないでください。接続情報ダイアログが表示されたら、入力する必要があります。
JacquelineIO

この方法で暗号化されていない秘密鍵を使用することは、大きなセキュリティホールです。しかし、authorized_keysの関連する行に「from = whatever」を追加することで問題を軽減できます。
markhahn 2017年

これは素晴らしいですが、PHP7とincomptabilityがありますようだ:core.trac.wordpress.org/ticket/35517
Supaiku

21

通常は、プラグインをwp-content\pluginsディレクトリにアップロードするだけです。SFTP経由でこのディレクトリにアクセスできない場合は、行き詰まっている可能性があります。


はい、ただwp-content / pluginsにドロップします。
ceejayoz 2009年

17

コマンドプロンプトで次のコマンドを入力すると、非常に簡単に取得できます。

sudo chown -R www-data:www-data your_folder_name

または、wp-config.phpファイルに次のコードをコピーして貼り付けます。

define('FS_METHOD', 'direct');

ここで、「your_folder_name」は、このフォルダー内にWordPressがインストールされているフォルダーです。



15

次のコードをwp-configに追加します

define('FS_METHOD', 'direct');

FS_METHODはファイルシステムメソッドを強制します。これは、direct、ssh2、ftpext、またはftpsocketsのみにする必要があります。通常、これは、更新の問題が発生している場合にのみ変更してください。変更しても問題が解決しない場合は、元に戻す/削除してください。ほとんどの状況では、自動的に選択された方法が機能しない場合、「ftpsockets」に設定すると機能します。

(基本設定)「direct」は、PHP内からのダイレクトファイルI / O要求を使用することを強制します。これは、適切に構成されていないホストでセキュリティ上の問題が発生するため、適切な場合に自動的に選択されます。

(2次設定) "ssh2"は、インストールされている場合、SSH PHP拡張機能の使用を強制します

(3番目の設定) "ftpext"は、FTPアクセス用のFTP PHP拡張機能の使用を強制することであり、最後に

(4番目の設定) "ftpsockets"はFTPアクセスにPHPソケットクラスを利用します

詳細については、http//codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constantsをご覧ください。


15

Ubuntuを使用している場合、私にとってうまくいった簡単な解決策は、次のようにApacheユーザー(デフォルトではwww-data)に所有権を与えることです。

cd your_wordpress_directory
sudo chown -R www-data wp-content
sudo chmod -R 755 wp-content

2
それを必要としないファイルに実行許可を与えないでください。
Burhan Ali

13

以下からの変更php_modfastcgicgi&がSuEXEC有効になって。私のために働く。

動作しない場合は、root に変更wp-content775てみてください。

chmod -R 775 ./wp-content

追加wp-config.php

define('FS_METHOD', 'direct');

うまくいくといいな


12

WordPress 2.7では、zipファイルを直接アップロードできます(プラグインページの下部にリンクがあります)-FTPアクセスは必要ありません。これは2.7の新機能であり、プラグインでのみ機能します(まだテーマではありません)。


ところで、アップグレードはさらに簡単です。新しいバージョンが利用可能であることを示すアイコンが表示され、「アップグレード」をクリックして、アップグレードを実行します。非常に素晴らしい。WordPressコアもこのようにアップグレードされています。何もアップロードせずに2.7から2.7.1に変更しました。
D.ランバート

これは、Webサーバー/ PHPユーザーがファイルに書き込みできるようにファイル権限を設定している場合にのみ当てはまります。そうでない場合は、FTP / SFTP資格情報の入力を求められます。stereointeractive.comの回答を参照してください。
Dave Forgac、2011

9

古いスレッドを復活させますが、SSH SFTPアップデーターサポートと呼ばれる素晴らしい新しいプラグインがあり、wp-config.phpファイルを編集せずにSFTP機能を追加できます。また、WordpressのSFTP実装は、サーバーで有効にされないことが多い、ややあいまいなPHPモジュールに依存しています。このプラグインは別のPHP SFTPプラグインをパッケージ化するため、Apache側で何も設定する必要はありません。

私はSFTPサポートを機能させるためにたくさんの問題に遭遇しました-このプラグインはそれらのすべてを解決し、ただ素晴らしかったです。


9

これを試して

1)wp-config.php追加でdefine('FS_METHOD', 'direct');

2)wp-contentディレクトリを777書き込み可能に設定します。

3)プラグインをインストールします。


6
こんにちは、モハン、FS_METHODオプションのヒープに感謝します。これは確かに私が探していたものです。私は次のように言う必要があります。例外的な状況でない限り、ディレクトリに777が必要になることはありません。これにより、ディレクトリは読み取り可能、書き込み可能、​​実行可能になります。これは大きなセキュリティリスクです。適切な解決策は、Apacheユーザーが誰であるかを調べることです(www-data、_wwwなど)。このユーザーには、wp-contentへの読み取りおよび書き込みアクセス権が必要です。または、このディレクトリ( 'sudo chown www-data wp-content')に対する所有権が必要です。実行権限はありません。少し率直に言って申し訳ありませんが、777はWebコンテンツにとって危険です。
ルーベン

8
アップロードディレクトリを777にしないでください。これは安全ではなく、答えにはなりません。
MKN Webソリューション

8

ステレオインタラクティブからの答えはすべてのオプションをカバーしています。FTPを使用する別の方法について言及したかっただけです。FTPアクセスを許可しない理由はセキュリティのためだと思います。これらのセキュリティ問題に対処する1つの方法は、127.0.0.1でのみリッスンするFTPサーバーを実行することです

これにより、WordPress内からFTPを使用できるようになり、プラグインをインストールして、他の世界に公開することなくプラグインをインストールできるようになります。これは、Joomla!などの他の一般的なWebアプリケーションにも適用できます。そしてDrupal。これは私たちのBitNamiアプライアンスクラウドサーバーで行うことであり、非常にうまく機能します。


8

SSH SFTPアップデータサポートプラグインもお勧めします。ちょうど私のすべての問題も解決しました...特に、管理者を通じて削除するプラグインを取得することに関して。通常の方法でインストールするだけで、次回WordPressからFTPの詳細を要求されたときに、秘密のSSHキーをコピー/貼り付けしたり、PEMファイルをアップロードしたりするための追加フィールドがあります。

私が持っている唯一の問題は、キーを覚えさせることです(両方の方法を試しました)。プラグインを削除する必要があるたびにそれを見つけて入力しなければならないという考えは好きではありません。しかし、少なくとも今のところ、それは確かな修正です。


1
「秘密のSSHキーをコピーして貼り付けるための追加フィールドがあります」....私はセキュリティの天才ではありませんが...ネットワーク経由で送信する必要のない秘密のSSHキーの要点ではありません?
明るい明るい

8

はい、WordPressにプラグインを直接インストールします。

  1. プラグインフォルダーをコピーし、WordPressプラグインフォルダーに貼り付けます。
  2. 管理者側(/ test / wp-admin)に移動し、プラグインリンクに移動した後、プラグインの名前を確認します。
  3. プラグインをアクティブ化して、プラグインを簡単にインストールします。

他のオプション

  1. プラグインコードのzipファイルを作成します。
  2. 管理者側(/ test / wp-admin)に移動し、プラグインリンクに移動してから、[新規追加]をクリックし、プラグインzipフォルダーを参照してプラグインをインストールし、プラグインをアクティブ化するオプションを表示します。プラグインを有効にします。

6

SFTPまたはSSHを使用してWordPressのプラグインを自動更新することは可能ですが、ssh2 pecl拡張が必要です。次のチュートリアルを使用して、それを行う方法を見つけることができます


6

私たちは(開発サーバーとライブサーバーの両方で)SSHでSFTPを使用しており、WordPressのアップロード機能を使用しようとしました(それほど難しくありません)。Tobyに同意し、プラグインをwp-content/pluginsディレクトリにアップロードして、そこからアクティブ化します。


6

多くの人々が許可を777に設定することを勧めているのを見ました。2日前と同じ問題が発生しましたが、これをwp-contentに追加しました

define('FS_METHOD', 'direct');

そして

プラグインフォルダの権限を775に設定

これにより、FTPアクセスのログイン/パスワードを要求するという私の問題が解決しました。

その前に、.zipファイルをプラグインフォルダーに追加してプラグインを手動で追加してから、それwp-admin/pluginsをインストールする必要がありました。


5

これを試してくださいwp-contentフォルダーに正しい権限が付与されているかどうかを確認してください。

wp-config.phpを編集して、次の行を追加します

define('FS_METHOD', 'direct');

フルアクセスするには、「wp-content」ディレクトリをwww-dataにchmodしてください。

プラグインをインストールしてみてください。


4

はい、できます。

追加する必要があります

define('METHOD','direct');

あなたのwpconfigで。ただし、この方法にはセキュリティ上の問題があるため、あまり好ましくありません。

おかげで、


3

方法1: これを設定できます。1. wp-config.phpで、この行を記述する必要があります。

define('FS_METHOD', 'direct'); 

注:define( 'DB_CHARSET'、 'utf8mb4')の後にこれを置きます。

  1. wp-contentパーミッションまたはパーミッションを再帰的に設定してください。完全なパーミッションは、filezillaを介して付与できます。書き込み>ディレクトリをクリック>権限>読み取りと書き込みを確認して実行し、サブディレクトリへの再帰も確認する

    方法2:

またはこれを設定することもできます

define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");

2020年2月までに、それは明確な指示ですNote: put this after define( 'DB_CHARSET', 'utf8mb4' ).
Osify

2

FTPやSFTP接続、あるいはchmod 777を設定することは、ローカル環境以外に行くための悪い方法です。SFTPメソッドでも開くと、不要なセキュリティリスクが増えます。

必要なのは、これらのディレクトリの所有者による/ wp-content / uploads&/ wp-content / plugins /への書き込み可能な権限です。(linux ls -laは所有権を表示します)。

実行されるデフォルトのapacheユーザーはwww-dataです。

chmod 777では、apache / phpスレッドユーザーだけでなく、マシン上のすべてのユーザーがこれらのファイルを編集できます。

SFTPをまだ使用していない場合は、外部ソースから発生する可能性のある別の障害ポイントが発生します。一方、目的を完了するには、apache / phpプロセスを実行するローカルユーザーのみがアクセスする必要があります。

誰かがこれらのポイントを作成しているのを見なかったので、私はこの情報をオンラインで常に発生するWPのセキュリティ問題に役立つように提供すると思いました。


2

ここに簡単な方法があります。

以下のコマンドを実行します。

これにより、Apacheのmod_rewriteモジュールが有効になります

$sudo a2enmod rewrite

このコマンドは、フォルダーの所有者をwww-dataに変更します

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

上記のコマンドを実行した後、FTPなしで任意のテーマをインストールできます。


1
Nginxの場合は、2番目のコマンドを実行するだけsudo chown -R www-data [Wordpress Folder Location]
srokatonie

@srokatonieコメントありがとうございます。これは誰にとっても役に立ちます。
Manuja Jayawardana


1

/ wp-contentディレクトリへの書き込み権限がない場合に、WordPressがWordPress管理ダッシュボード経由でプラグインをアップロードできない唯一の理由。ワードプレスディレクトリ/ wp-contentには0755アクセス許可レベルが必要です。フォルダのアクセス許可レベルを変更するには、さまざまな方法があります。

cPanelを使用してファイルのアクセス許可を変更する:

WordPressのWebサイトがあるはずのパブリックHTMLフォルダーを開くか、Webサイトが他のフォルダーにある場合はサイトのルートディレクトリを開いて、ファイルマネージャーに移動します。WordPressルートディレクトリでwp-contentフォルダーに移動します。wp-contentフォルダー行の最後にある最後のボックスには、このフォルダーのファイル権限があります。フォルダーのアクセス許可レベルを必ず0755に編集すれば完了です。

SSHターミナルを使用してファイルの権限を変更する:

端末でWordPressサイトのルートを見つけます。私の場合は/ var / www / htmlでしたので、WordPressルートディレクトリに移動するには、次のコマンドを入力します。

cd /var/www/html 

これで、必要なフォルダー/ wp-contentがあるWordPressルートディレクトリに移動しました。したがって、ファイルのアクセス許可を変更するには、次のコマンドを入力します。

sudo chmod wp-content 755 

これにより、/ wp-contentディレクトリファイルの権限が0755に変更されます。

FTP経由でワードプレスプラグインをアップロードするエラーメッセージが表示されなくなりました。


0

SSHを使用してプラグインをインストールする最良の方法は、WPCLIです。

WP CLIコマンドを使用するには、SSHアクセスが必須であることに注意してください。使用する前に、ホスティングサーバーまたはマシンにWP CLIがインストールされているかどうかを確認してください。

確認方法:wp --version[インストールされているwp cliバージョンが表示されます]

インストールされていない場合、インストール方法:WP-CLIをインストールする前に、環境が最小要件を満たしていることを確認してください。

UNIXライクな環境(OS X、Linux、FreeBSD、Cygwin); Windows環境での制限付きサポート。PHP 5.4以降WordPress 3.7以降。最新のWordPressリリースより古いバージョンでは、機能が低下している可能性があります

上記の点を満たしている場合は、次の手順に従ってください。参照URL: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 ]

これで、WP CLIをインストールする準備ができました。

これで、次のコマンドを使用して、WordPress.orgで利用可能なプラグインをインストールできます。

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

注:wp cliは、wordpress.orgで利用可能なプラグインのみをインストールできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.