#はじめに
WordPressの構築時、SFTPでファイル転送ができない
ことや、プラグインがインストールできない
などのエラーに遭遇したため、wordPressのパーミッション設定についてまとめます。
#前提条件
- wordpressのサーバーに対して、SFTPでファイル転送することがある。(ログインユーザは
ec2-user
) -
/var/www/html/
配下にwordpressのディレクトリやファイルが置かれている - nginxを使用。apacheでも問題なし。
#ファイル転送やプラグインインストール時、パーミッションが原因のエラー
###プラグインやwordpressバージョンをアップデートするときに、FTP接続情報
を聞かれる
原因は、サーバであるapacheやnginxに対して、ディレクトリやファイル所有者権限が不足しているためです。
###プラグインを更新するときに、ディレクトリを作成できませんでした。
とエラーになる
こちらも同様に原因は、サーバであるapacheやnginxに対して、ディレクトリやファイル所有者権限が不足しているためです。
###SFTPでファイル転送できない
原因は、転送先のディレクトリや上書きするファイルに対して、書き込み権限が足りていないためです。
#結論
サーバーがnginx、SFTPのログインユーザーをec2-userとして、ファイルを転送する場合、以下のように設定します。
ファイルやディレクトリ | 権限 | 所有者:グループ |
---|---|---|
.htaccess | 606 | nginx:ec2-user |
wp-config.php | 600 | nginx:ec2-user |
ディレクトリ | 775 | nginx:ec2-user |
ファイル | 664 | nginx:ec2-user |
以下のコマンドで所有者とグループ、権限を一括で変更できます。
$ sudo chown -R nginx:ec2-user /var/www/html
$ sudo find /var/www/html -type f -exec chmod 664 {} \;
$ sudo find /var/www/html -type d -exec chmod 775 {} \;
↑できない場合は↓
$ sudo find /var/www/html -type f -print | xargs chmod 664
$ sudo find /var/www/html -type d -print | xargs chmod 775
-execオプションを入れることで、findで検索した結果を使って別のコマンドを実行できます。
その時に、{}は検索結果とエイリアスとして働きます。
###セキュリティー面に不安の場合
もし、セキュリティーに不安がある場合、ファイル転送作業後は、権限を狭めるとよいと思います。
ファイルやディレクトリ | 権限 | 所有者:グループ |
---|---|---|
ディレクトリ | 705 | nginx:ec2-user |
ファイル | 604 | nginx:ec2-user |
##パーミッションを修正してもFTP接続情報が聞かれる場合
wp-config.phpに追記します。
define('FS_METHOD', 'direct');
このとき、
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');
よりも上に追記する必要があります。
#wordpressのパーミッションに問題ないかの確認方法
wordpress→ツール→サイトヘルスに遷移し、サイトヘルスが「良好」
だと問題ありません。
#参考