WordPressのFTP設定はなぜ必要?設定方法と失敗例と解決法

2020年8月28日

WordPressを立ち上げるた後に、WordPressのアップデートやプラグインのインストールをするとFTP(ファイル交換プロトコル)のアカウントについての入力画面が表示される場合があります。

「なにこれ?」と思いますよね。特にWordPressのレンタルサーバーを使っている人は「FTPなんか使わないし」と思うでしょうが、WordPressの内部ではFTPを使っています。

私はここ2年くらい3回WordPressを立ち上げましたが、毎回FTPの設定ではまってしまいました。その際の条件はだいたいこんな感じです。

  • Debian Linux
  • Apache2 webserver
  • MySql
  • VPS (Google Cloud Platform)

毎回何時間も時間を無駄にしてしまいます。この記事を読んでくれている方が私のように無駄な時間を使わないように、また自分への備忘録を兼ねてWordPressのFTP設定について記事にしました。

WordPressはFTPが必要か?

そもそもWordPressをインストールしただけでは1台のサーバーしか使っていないのでFTPなんて使わないように見えます。ですが、WordPressは1台のサーバーの中でFTPの送信と受信を使っています。

これはなぜかというと、OS上のファイルの所有権が原因になっています。

WordPressのアップデートやプラグインのインストールなどでは他のサイトからインストールファイルをローカルにダウンロードしてからインストールを実施します。

この際インストールファイルのダウンロードはウェブサーバが行うため、ダウンロードしたファイルの所有者はウェブサーバと同じになります。(Debianならwww-data、CentOSならApache。) 

たいていの場合はWordPressのインスト―ルはWordPressの管理用アカウント(例えばwp-admin)で行うので所有者はwp-adminになります。

WordPressの所有者がwp-adminになるとwww-dataの所有権のファイルを解凍することができなくなりますので権限エラーが発生してしまいます。

このような権限のエラーを起こさないためにWordPressではFTPサーバーを利用しています。一度FTPによりファイルをwww-dataからwp-adminに渡してしまえば権限のエラーを回避できます。

FTPエラーによる問題

ここまで理解できればFTPサーバーの設定はwp-adminのアカウントを入力すればいいと分かるのですが、はじめはwww-dataかレンタルサーバーのログインアカウントかどのアカウントを使うのかかなり混乱します。

また最近のクラウド系のVPSではFTPログインを認めていないところもあり、さらにエラーの原因を分かりにくくさせています。

それならFTPなんて使わなければ良いと思ったのですが、FTPが無いとWordPressのアップデート、プラグインのインストール、テーマのインストールができなくなるので、ほぼWordPressのカスタマイズができなくなります。

これではWordPressを使っている意味がありません。ということでFTPエラーの解決方法を調べてみましたので紹介します。

FTPエラーの回避方法

せっかく内蔵されているFTPによる所有者変更の機能ですが、いろいろと試してみた結論として使わない方が無難です。ですのでここではFTPの使用を回避する方法を説明します。

WordPressはファイルダウンロードとインストールの所有権の相違を解決するためにFTPを使用します。この2人の権限が同じであればFTPを設定する必要はありません。入力画面にもなりません。

ウェブサーバの権限はapacheやwww-dataが持っておりこれを変えるのはかなり大変ですが、WordPressのインストール権限(インストールディレクトリの所有者)を変えることは簡単です。

所有権の変更は次のchownコマンドを使います。ウェブサーバーの所有者がwww-dataだとして、WordPressを/var/www/html/の直下にインストールしている場合は次のように所有権を変更します。

# chown -R www-data:www-data /var/www/html

所有権は/var/www/html以下のファイル全てに対して行います。デフォルトではhtmlはrootの所有だと思いますが、www-dataに変えてしまいます。(ここはchmodでもいいかも)

www-data:www-dataはwww-dataグループのwww-dataに所有権を移すという意味です。-Rはファルダの子ファイルも含みます。

私は以前までこの方法を敬遠していました。実行ファイルも含まれるフォルダの権限を丸ごと変更するなんてどんな問題が発生するか心配で・・・。

でも考えてみたらchmodで書き込み権限を個別に設定していくよりもよっぽど簡単で安全でした。不具合が起こったらchownでいっきにもとに戻すこともできます。

まとめ

ここまでWordPressのFTP設定に関する情報をまとめました。WordPressのFTP設定は自分でインストールすると絶対に引っ掛かります。FTP設定ができないとプラグインやアップデートが使えません。

この問題の解決策をまとめると、自分でWordPressをインストールするのであればWordPressのインストールファイルはウェブサーバー(www-dataとかapacheとか)と同じ所有者にしてしまうのが一番簡単に問題を回避できます。

まあ、一言で書けるようなことですが、私は毎回いろいろ試して数時間無駄にします。同じような境遇の人が同じ無駄時間を費やさないようにブログに残しておきます。