プラグインをインストールするためにFTP資格情報を要求するWordPress


117

ローカルシステムにWordPressブログをインストールしました。しかし、管理者からプラグインを追加しようとすると、FTPアクセスが要求されます。WordPressがFTPなしでアップロードできるようにするには何を設定する必要がありますか?

回答:


301

wp-config.phpにコードを追加してみてください:

define('FS_METHOD', 'direct');

29
私はグーグルしながらこの答えに出くわし続けるので、私はここに自分自身と他の人のためにメモを投稿します。コードはwp-admin / includes / file.php:get_filesystem_methodにあります。Wordpressはファイル「wp-content / temp-write-test-」。time()を作成しようとします。これが失敗した場合は、FTPのみを使用できると見なされます。しかし、wp-content自体が書き込み可能ではない場合、これは真実ではない可能性がありますが、たとえば、wp-content / pluginsは書き込み可能です。次に、FS_METHODの強制が機能します。
Sebastian Schmid

3
動作しますが、パッケージの解凍後に問題が発生し、「ディレクトリを作成できませんでした」というエラーが表示されます。
Andrew

3
これは私を助けましたが、それは失敗についてより多くの情報を公開したからです。中心的な問題は、更新を実行しているユーザーアカウントに書き込み権限があることです。システムのタイプごとに、これは異なる場合があります。(以下のいくつかの回答では、デーモン、httpd、またはapacheに書き込み権限を設定するように指示されていることに注意してください。)以下のコメントからPHPスニペットを確認するのに役立ちました(<?php echo(exec( "whoami")); ?>)更新を実行しているユーザーを特定できるようにします。ここで提案された変更を行うと、FTPクレデンシャルのチャレンジが抑制され、エラーメッセージが表示されるように見えました。
agentv

Apacheではなくnginxを使用しています。PHP-FPM ユーザーとグループの正しい組み合わせを使用していることは明らかです(@Aboozar Rajabiによって説明されているトリックを使用)。ただし、何らかの理由でWPチェックが失敗します(ただし、ログにエラーはありません)。この設定を使用すると、4.7に完全にアップグレードできました。
Gwyneth Llewelyn

1
私はWordPressの前に他の分野で開発を行ってきましたが、私の推測FS_METHODはの略ですFILESYSTEM_METHODdirectFTPを使用しない-ファイルを変更するように定義している場合、WordPressにサイト上のファイルを直接変更するように強制することになります。
Dylan Pierce

39

Ubuntuを使用している場合。

sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER

7
-1これを行うには悪い考えで、唯一のwp-コンテンツはによって所有されなければならないwww-data。ここを参照してくださいcodex.wordpress.org/Hardening_WordPress:ここかstackoverflow.com/questions/18352682/...
timhc22

この回答は、「インストールに失敗しました:WordPressコンテンツディレクトリ(wp-content)が見つかりません」というエラーも修正します。ダッシュボードからプラグインをインストールしようとしたとき。
WindChimes 2017

25

「WordPressコントロールパネルを使用してプラグインを自動的にインストール、アップグレード、または削除する場合、WordPressはファイルシステム上のファイルを変更する必要があります。

変更を加える前に、WordPressはまずファイルシステムを直接操作するためのアクセス権があるかどうかを確認します。

WordPressがファイルシステムを直接変更するために必要な権限を持っていない場合、WordPressがFTPを介して必要なことを実行できるように、FTP資格情報を要求されます。

解決策:Apacheのインスタンスが実行しているユーザーを確認するには、次の内容のテストスクリプトを作成します。

<?php echo(exec("whoami")); ?>

私にとっては、それはデーモンであり、www-dataではありませんでした。次に、次の方法で権限を修正します。

sudo chown -R daemon /path/to/your/local/www/folder

3
exec()または同様の機密関数を無効にすることを忘れないでください。生産中。
アルダ2016年

2
まだよく使用される<?php echo(exec("id")); ?>としても、ユーザーIDを超えてあなたのグループのデータを提供します:uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
グウィネスLlewelynは

あなたがSUDOとchownをすることができます場合は、入力することができますwhoami。これと同じ情報を参照sudo chown -R `whoami` /path/to/your/local/www/folder
ベンジー

11

OSXでは、私は以下を使用しましたが、うまくいきました:

sudo chown -R _www:_www {path to wordpress folder}

_wwwは、MacでPHPを実行するユーザーです。

(また、いくつかのフォルダーをchmodする必要がある場合もあります。私は最初にそれを実行しましたが、それは修正されませんでした。それが機能するのは、chownコマンドを実行するまでではなかったため、chownコマンドであるかどうかわかりません単独、またはchmodとchownの組み合わせ)


9

wordpressフォルダーの所有権をwww-dataに再帰的に変更し、Apacheを再起動しました。

sudo chown -R www-data:www-data <folderpath>

それは魅力のように働きました!


これは、おそらくほとんどの人にとって正しい答えです。これは私がフォルダを作成し、chownするのを忘れた3回目だと思います。
MrMysterious2502 2017年

7

Googleの最初のヒットから

WordPressがファイルに直接アクセスできない場合、WordPressはFTP認証情報を要求します。これは通常、WordPressファイルを所有するユーザーではなく、apacheユーザー(mod_phpまたはCGI)として実行されているPHPが原因で発生します。

これはほとんどの共有ホスティング環境ではかなり正常です。ファイルはユーザーとして保存され、Apacheはユーザーapacheまたはとして実行されますhttpd。これは実際には優れたセキュリティ対策であるため、エクスプロイトやハッキングでホストされているファイルを変更することはできません。すべてのWPファイルを777のセキュリティに設定することでこれを回避できますが、これセキュリティがないことを意味するので、私はそれに対して強くお勧めします。FTPを使用するだけですが、これは適切な理由で自動的に推奨される回避策です。


説明ありがとう。PHPを正しいユーザーとして実行するか、所有者または別のソリューションを修正するように共有サーバーを構成する方法はありますか?
Maxwell sc 2017年

4

最初にインストールフォルダーに移動します(例)

cd /Applications/XAMPP/xamppfiles/

次に、htdocsディレクトリを変更します。

sudo chown -R daemon htdocs

プロンプトが表示されたらrootパスワードを入力し、chmod呼び出しで終了します。

sudo chmod -R g+w htdocs

4

ここで説明されている手順に従ってUbuntu 14.04にWordPressのローカルインストールを行い、単に実行しました。

sudo chown -R www-data:www-data {path_to_your_project_directory}

プラグインのダウンロードに関する私の問題を解決しました。私がこの投稿をここに残す唯一の理由は、問題をグーグルしたとき、これが最初の結果の1つであり、それが私の問題の解決策に導いたためです。

これが誰かに役立つことを願っています!


3

より大きな問題の一部と同じ問題がありました。の提案された解決策

define('FS_METHOD', 'direct');

はそのウィンドウを非表示にしますが、テーマやアップグレードの読み込みに問題がありました。これは権限に関連していますが、この場合、php OSベンダーのmod_phpからより安全なphp OSベンダーのFastCGIアプリケーションに移動することで問題を修正しました。


3

プラグインのインストール中にWordpressがホスト名またはFTPの詳細を要求する場合。次に、次の手順に従います。

サーバーにログインし、/ var / www / html / wordpress /に移動します。wp-config.phpを開き、define( 'DB_COLLATE')の後にこの行を追加します

define('FS_METHOD', 'direct');

「ディレクトリを作成できませんでした」エラーが発生した場合。再帰的にあなたのワードプレスディレクトリに書き込み権限を与えます

chmod -R go+w wordpress

注意。セキュリティのため、プラグインを次のようにインストールしたら、これらの権限を取り消します

chmod -R go-w wordpress

2

この問題を解決する最も簡単な方法は、次のFTP情報を wp-config.php

define('FS_METHOD', 'direct');
define('FTP_BASE', '/usr/home/username/public_html/my-site.example.com/wordpress/');
define('FTP_CONTENT_DIR', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/plugins/');

FTP_BASEは、WordPressインストールの「base」(ABSPATH)フォルダーへの完全パスですFTP_CONTENT_DIRは、WordPressインストール のwp-contentフォルダーへの完全パスです。 FTP_PLUGIN_DIRは、WordPressインストールのpluginsフォルダーへの絶対パスです。


FTPは安全ではないため、FTPを無効にするため、解決策ではありません。代わりにSFTPを使用します。
ローレンスは対処

1

Nielsが述べたように、これはサーバープロセスのユーザーがWordpressフォルダーに書き込むことができないために発生します。

しかし、これは多くの記事が説明していないことです。これは、nginxプロセスではなく、phpプロセスの所有者です。nginxの所有者を変更しようとしても、これは解決されません。

これを解決するには、実行ps auxしてphp-fpmプロセスを所有しているユーザーを確認してください。次に、そのユーザーがwordpressフォルダーの所有者と同じユーザーであるか、少なくとも書き込みができることを確認します。ユーザーがフォルダに書き込めない場合は、フォルダのアクセス許可や所有権を変更する必要があります。または、2人のユーザー(サーバーの所有者とワードプレスのフォルダーの所有者)を、フォルダーに書き込むことができる共通のグループに入れます。または、php.iniの "user"プロパティを、フォルダーに書き込み可能なユーザーに変更します。


1

この質問に対する同様の回答はたくさんありますが、根本的な原因については完全に触れていません。元の投稿に対するSebastian Schmidのコメントはそれに触れていますが、完全には触れていません。2018-11-06の私の見解は次のとおりです。

根本的な原因

WordPress管理インターフェースを介してプラグインをアップロードしようとすると、WordPressは「get_filesystem_method()」という関数を呼び出します(参照:/wp-admin/includes/file.php : 1549)。このルーチンは、問題の場所(この場合はプラグインディレクトリ)にファイルを書き込もうとします。もちろん、WordPressユーザー(phpを実行しているユーザーIDと考えてください)が問題の場所にファイルを書き込むことを許可するファイル権限が設定されていない場合、ここですぐに失敗する可能性があります。

ファイルを作成できる場合、この関数は一時ファイルのファイル所有者と、関数の現在のファイルのファイル所有者を検出します(参照:/wp-admin/includes/file.php : 1572)を検出し、2つを比較します。それらが一致する場合、WordPressの言葉では、「WordPressはWordPressファイルと同じ所有者としてファイルを作成しています。つまり、PHP経由で新しいファイルを変更して作成しても安全です」ということであり、FTP認証情報のプロンプトなしでプラグインが正常にアップロードされます。一致しない場合は、FTP資格情報のプロンプトが表示されます。

修正

  1. プラグインディレクトリが、phpプロセスを実行しているIDによって書き込み可能であることを確認します。
  2. PHPプロセスを実行しているIDが次のいずれかのファイル所有者であることを確認します。

    a)すべてのWordPressアプリケーションファイル、または...
    b)少なくとも/wp-admin/includes/file.phpファイル

最終コメント

この問題を回避するためにfile.phpにファイルの所有権を具体的に適用することにあまり熱心ではありません(控えめに言っても少しハッキーな気がします!)。この時点では、WordPressコードベースは、WordPressアプリケーションファイルのファイル所有者と同じユーザープリンシパルでPHPプロセスを実行するようになっているようです。これについてコミュニティからのコメントを歓迎します。


1

私は同じ問題に直面していました!以下のコードをwp-config.phpファイル(任意の行)に追加して、現在動作しています!

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