WordPressで移行後にPluginを入れる際、FTPアカウントを聞かれる場合

Pluginを使わずに、手作業でWordPressのサーバーを移行させる(元サーバーからデータ取得)
Pluginを使わずに、手作業でWordPressのサーバーを移行させる(新しいサーバーにデータを配置)

この手法で移行した場合、FTPアカウントを聞かれるようになるケースがあります。

そもそもFTPアカウントなんて作ってない!教えてもらって無い!なんてことを言う方もいるかもしれませんが、出るときは別にアカウントがあるから出ているわけではありません。

ではなぜでるか?どうすればでなくなるのか?を説明したいと思います。

なぜFTPアカウントを聞かれる画面が出るのか

なぜかは別にしらんでいい!直せ!って人は読み飛ばしで。

WordPressが書き込みの権限を持っていないため。書き込み権限を求めてる

もともと聞かれなかったのにこうなった場合には上で間違いないと思います。

WordPressはサーバー上でapacheやらnginxのユーザーで実行されています。

そのため、wp-content/Pluginのディレクトリの所有者が以下の様にしてあったりすると、書き込みに行っても権限が無くて書き込めないんですね。

#聞かれる権限の例
[root@ ~]# ll /var/www/html/public_html/wp-content/
合計 4
-rw-r--r-- 1 fastpress fastpress  28  7月 10 16:36 index.php
drwxr-xr-x 4 fastpress fastpress 215  5月 18 14:09 languages
drwxr-xr-x 3 root      root       39  6月 11 14:03 mu-plugins
drwxr-xr-x 5 fastpress fastpress 138  7月 10 10:15 plugins

権限はdrwxr-xr-x、で所有者はfastpress、所有グループもfastpress、となると、apacheやnginxユーザーは書き込むことができません。

そのため、WordPressは書き込み権限のあるアカウント欲しさにFTPユーザーを求めるわけです。

どうしたら聞かれなくなるのか

上記のことから、書き込み権限がある状態にしてあげればいいわけです。対処としては以下が考えられます。

・Pluginディレクトリの所有権限をwebサーバーに渡す
・webサーバーの実行者をPluginディレクトリの所有者にする
・Pluginディレクトリの書き込み権限を全ユーザーに渡す

どれでも書き込みが可能になりますが、セキュリティ上よろしくないものもあるので、注意が必要です。
特に、「なら書き込みできればOKじゃん!」とWordPressの全ディレクトリ・ファイルにchmod 777とかするのは絶対にやめましょう

基本的にPluginに関して自作していて変更するとかしないのであれば、「Pluginディレクトリの所有権限をwebサーバーに渡す」でいいと思います。 webサーバーでapacheを使っていて、上のようなDocumentRootの場合にはこんな感じですね。

chown apache:apache /var/www/html/public_html/wp-content/plugins

これでPluginを聞かれることはなくなります。めでたし!(ただ逆にこうするとFTPがある場合にはFTPユーザーで操作できないから気をつけて)