自分でサーバー構築してWordPressをインストールすると、プラグインのアップデートなどの際にFTP関連設定を入力しなければいけなくなる場合があります。
『要求されたアクションを実行するには、WordPress が Web サーバーにアクセスする必要があります。』と出てくるあの画面のことです。
私の場合は作業用Mac、いわゆるMAMP環境でそういったことが起こりました。(そういう方が多いらしいですね。)
それについての対処法を色々調べた結果、3つほど発見したので、それをご紹介。
chownでWordPressファイルのオーナーを変更する
問題の画面は、スクリプトの実行ユーザーとファイルやフォルダを作成した際のオーナーが異なることにあるそうです。
もう少し具体的には、『wp-admin/includes/file.php』の中で、まず仮のファイルを作成し、そのオーナー(つまりUID)をfileowner()で取得しています。そして、getmyuid()でスクリプト実行者のUIDを取得して、両者を比較します。
それらが同じならそのままダウンロードする、同じでなければFTP情報を入力する画面を表示する、という条件分岐を行なっています。
なので、スクリプト実行者をファイル作成者を合わせるために、以下のようにファイルオーナーを変更します。
chown -R apache:apache (WordPressを設置したディレクトリの名称)
などでしょうか。
と書いてはみたものの、実はこの方法は私の環境では使えませんでした。私の方法が間違っている可能性が高いですが、詳細な原因は現時点では判っていません。
あと、レンタルサーバーなどだとこの方法は使えないことの方が多そうですね。(経験上レンタルサーバーならこの問題自体起きることが少ないですが。)
wp-config.phpに1行加える
これが最も多く使われているようですね。
wp-config.phpに以下の1行を追加します。場所はファイル内のどこでも良いです。私は最下行に追加しました。
define('FS_METHOD','direct');
恐らくセキュリティ的には、前述した『ファイルオーナーを変更する』方法の方がより良いような・・・PHPソースを読む限りではそんなに問題無さそうかなと思いますが。(詳しい方いらっしゃいましたら教えてください。)
フィルターフック『filesystem_method』を使う
テーマのfunctions.phpに以下の記述を追加する方法もあります。
function set_fs_method($args) {
return 'direct';
}
add_filter('filesystem_method','set_fs_method');
『wp-admin/includes/file.php』内では『filesystem_method』というフィルターフックを使って、この部分の条件分岐をしています。そこにフックして『direct』を入れてやることで、問題の画面が表示されなくなります。
処理的には、2番めのwp-config.phpに1行追加する方法とそれほど大差ないですね。(いや、あるんですけど。)
まとめ
問題が起こった時、「wp-config.phpに追加する方法」は比較的すぐに見つかりましたが、漠然と「セキュリティ的にどうなのかな?」という疑問がありました。
そこで、更に調べてファイルオーナーの変更の方法を発見し、これは良いなと思って実行してみまたしたが、私の環境ではうまく行かず。
なので、もう少し詳細に調べてみたところ、フィルターフック『filesystem_method』を使う方法を発見しました。
この方法に問題が無いかどうかは判ってませんが、今のところ問題は起きていません。折を見て調査してみたいと思います。
私もMacBook Pro上のOS X 10.8でのMAMP環境で構築していて、同じ症状が発生したので参考にさせていただきました。私は1つ目の「chownでWordPressファイルのオーナーを変更する」の方法で、コマンドは「sudo chown -R _www:_www wordpress」と入れることで、3.5→3.5.1へと自動更新がうまくいきました。情報ありがとうございました。
Netwandererさん コメントありがとうございました。お役に立てたようで良かったです。また、記事にも書きましたが私の環境ではchownの方法は使えませんでした。ですが、ユーザー及びグループ『_www:_www』というのは試していなかったような記憶があるので、試してみたいと思います。貴重な情報をありがとうございました!
ピンバック: Wordpress更新時にFTP認証が求められる謎 | yuuAn's Note
こんばんは、はじめまして。
WordPressさんにFTPに接続しろと言われて1時間くらい詰まってて、検索して来ました(TT)
感謝です!
もう解決済みかもしれませんが、
Apacheのユーザー名とグループは、httpd.confに記載されてました!
170行目あたり(環境によって位置が違うかも・・)に
User ◯◯(Apacheのユーザー名)
Group ◯◯(Apacheのグループ名)
↑こんなかんじで記載されているので、ここを書き換えてapache再起動か
ここの名前に合わせてchownすればApacheと同じユーザーに変更されます!
(ちなみにmacのxampp環境では、User→daemon / Group→daemonでした^^)
httpdコンフいじると他の運用中のものに影響出るかもしれないので
chownがいいと思います!(笑)
しゃのさん
情報ありがとうございました!
私自身は『_www:_www』に変更することで動作的には解決していましたが、その設定がどこでされているのかが判らない状況でした。
それで、頂いた情報を元にhttpd.confを確認したところ、UserとGroupの記述を発見しました。(私の場合は130行目付近でした。)
試しにhttpd.confの記述を変えてApache再起動すると、やはりFTP接続の画面が表示されたので、ここで間違いないと言っていいですね。
ここ10ヶ月くらいの疑問が解けて、一つ賢くなることができました。本当にありがとうございました!
ピンバック: 「要求されたアクションを実行するには、WordPress が Web サーバーにアクセスする必要があります」と怒られた時の対処法 – Masaru の独学ブログ
ピンバック: WordPressをさくらVPSへ移行(参考URL) – キャタピラ
ピンバック: AWSにWordPress入れてお名前.comでサブドメイン設定してブログを作る:その4 | 電波の杜
ピンバック: WordPressのプラグインを更新時に接続情報の入力画面が表示する | blogweb
ピンバック: wordpressでFTPがうまくいかない時 | Please remember these .
ピンバック: WordPress 更新時のエラーあれこれ | Silent Bob の プログラムまとめ2
ピンバック: WordPress更新でFTP入力画面が表示される場合の対処法 | hylogix
ピンバック: WordPressをインストールして、FTPがーっと言われた時の対処 | No:476 | 毎日工房 | 毎日工房
ピンバック: WordPressをインストールして、FTPがーっと言われた時の対処 | No:476 | 毎日工房 |
ピンバック: [WordPress] 更新時にFTP情報入力を促される場合の対処 – 端くれプログラマの備忘録
ピンバック: wordpressの更新をブラウザベースでやりたい | 自由気ままに・・・
ピンバック: I know was how to update of WordPress and the Plugins on KUSANAGI! | ryo.nagoya
ピンバック: vagrantでWordPressのアップデートをする | ミリオンハイスクール | ネットビジネス | WordPress
ピンバック: 73spica's Blog | WordPressサイトの移行手順まとめ(mysqldumpから別環境移行まで)
ピンバック: WordPressのブログでセキュリティ対策してみる | mokuo's tech blog
ピンバック: WordPress更新(アップデート)ができない! - YOS'BLOG
ピンバック: 自宅サーバーにWordPressを入れチューニングをしてDDNSで運用してみた、まとめ | | 格安ホームページ制作|Webrara
ピンバック: 自宅サーバーにWordPressを入れチューニングをしてDDNSで運用してみた、まとめ | 奈良のWeb制作管理運用|ukisystem
ピンバック: WordPress導入時のトラブルと対処法 その3(FTP情報入力画面が表示される) – PCと釣りとサバゲー
ピンバック: Wordpressの更新でFTP情報の入力になった場合 | 株式会社オルタ
ピンバック: ドメインキングでテーマの更新やプラグインの更新ができない件
ピンバック: localhostにインストールしたWordPressの設定をちょっとだけ変更 | Smile Peace
今更ですが、ファイルオーナーの確認は
「wp-admin/includes/file.php」自身と tempファイルで比較されるので
「file.php」のオーナーを apache の実行ユーザーと同じにするだけで良いです。
例:
chown apache (wpインストールディレクトリまでのパス)/wp-admin/includes/file.php
あとは適当なディレクトリに書き込み権限を付与してください。
通りすがり様
そのような仕様があったのですね。
ありがとうございました!