2026年5月20日
2026年5月20日
WordPressのファイルパーミッションの正しい設定|755/644と所有者の確認手順
WordPressで画像のアップロードに失敗する、プラグインの更新で「接続情報」(FTPの入力画面)が出る、403エラーが出る、といった問題の多くはファイルのパーミッション(権限)と所有者の組み合わせが原因です。この記事では、WordPress公式ドキュメント(Advanced Administration の「File Permissions」)の推奨値をもとに、確認と設定の手順を説明します。内容は2026年10月時点のものです。
作業の前に、ファイルとデータベースのバックアップを取ってください。
パーミッションの数字の意味
パーミッションは「所有者・グループ・その他」の3者に対して、読み取り(r=4)・書き込み(w=2)・実行(x=1)の合計を並べたものです。フォルダの「実行」は、中に入る(中のファイルを開く)権限を表します。
| 対象 | 推奨値 | 所有者 | グループ | その他 |
|---|---|---|---|---|
| フォルダ | 755 | 読み・書き・実行 | 読み・実行 | 読み・実行 |
| ファイル | 644 | 読み・書き | 読み | 読み |
| wp-config.php | 600、440、400 など | 下の説明を参照 | ||
| .htaccess | 644 | 読み・書き | 読み | 読み |
公式ドキュメントでは、suEXEC 型の共用サーバーではフォルダ 755 または 750、ファイル 644 または 640 としています。
書き込めるかどうかは「所有者」で決まる
よくある誤解が「755より小さいとアップロードできない」というものです。実際には、755 のフォルダに書き込めるのは所有者だけです。そのため、次のように結果が分かれます。
- PHP がフォルダの所有者と同じユーザーで動いている場合:755 で書き込める
- PHP が別のユーザー(
www-dataやapacheなど)で動いていて、フォルダの所有者が FTP のユーザーの場合:755 では書き込めない
つまり、アップロードやプラグインの更新に失敗するときは、数字を大きくする前に「フォルダの所有者」と「PHP を動かしているユーザー」が一致しているかを確認します。
WordPress は、プラグインやテーマの更新時に、PHP が作ったファイルの所有者と WordPress のファイルの所有者が同じかどうかを調べます。一致しない場合は直接書き込まずに、「接続情報」の画面で FTP の情報を求めます。この画面が出る場合も、所有者が一致していないことが原因です。
PHPがどのユーザーで動いているかの違い
| サーバーの形 | PHP の実行ユーザー | 755/644 で動くか |
|---|---|---|
| 一般的なレンタルサーバー(suEXEC、PHP-FPM のプールを契約者ごとに分けている) | 契約者自身のユーザー | 動く |
| 自分で構築した VPS(Apache の mod_php、または PHP-FPM の既定のプール) | www-data(Debian/Ubuntu)、apache や nginx(RHEL 系)など |
所有者を合わせないと書き込めない |
レンタルサーバーで 755/644 にしても書き込めない場合は、所有者が別のユーザーになっていないか(以前に root で作業した、など)をサーバー会社の管理画面やサポートで確認してください。
ステップ1:現在の状態を確認する
SSH で WordPress のフォルダに移動して確認します。/var/www/html は自分の環境の WordPress のフォルダに置き換えてください。
cd /var/www/html
# パーミッション・所有者・グループを表示する
ls -la
ls -la wp-content/
ls -la wp-content/uploads/
左端の drwxr-xr-x が 755、-rw-r--r-- が 644 に当たります。その右の2つの列が所有者とグループです。
PHP の実行ユーザーは、次のコマンドで確認できます。
# PHP-FPM のワーカーがどのユーザーで動いているか
ps -eo user,comm | grep -E 'php-fpm|php[0-9.]*-fpm' | sort | uniq -c
# Apache の場合
ps -eo user,comm | grep -E 'apache2|httpd' | sort | uniq -c
root の行はマスタープロセスです。その他の行のユーザーが、PHP を実際に動かしているユーザーです。
FTP クライアント(FileZilla など)では、ファイルを右クリックして「ファイルの属性(パーミッション)」を開くと数字を確認できます。FileZilla では所有者の列も表示できます。
ステップ2:SSHでフォルダとファイルを一括設定する
WordPress のフォルダで実行します。-type d がフォルダ、-type f がファイルです。
cd /var/www/html
# フォルダを 755 にする
find . -type d -exec chmod 755 {} +
# ファイルを 644 にする
find . -type f -exec chmod 644 {} +
chmod -R 755 のようにフォルダとファイルに同じ値を付けると、すべてのファイルに実行権限が付いてしまうため、上のように分けて設定します。
ステップ3:所有者を合わせる
レンタルサーバー(PHPが契約者のユーザーで動く)の場合
所有者が契約者のユーザーになっていれば、追加の作業は不要です。root で作ったファイルなどが混ざっている場合は、サーバー会社に相談してください(多くのレンタルサーバーでは利用者が所有者を変更できません)。
VPSで、PHPが www-data などで動く場合
考え方は2つあります。
1つ目は、WordPress のファイル全体を PHP の実行ユーザーの所有にする方法です。管理画面からの更新やアップロードはそのまま動きますが、PHP が乗っ取られた場合に WordPress 本体のファイルも書き換えられます。
# Debian/Ubuntu の例(実行ユーザーが www-data の場合)
sudo chown -R www-data:www-data /var/www/html
2つ目は、ファイルの所有者は作業用のユーザー(例 deploy)のままにして、書き込みが必要なフォルダだけをグループで書き込めるようにする方法です。公式ドキュメントでも、グループの書き込みで運用する場合はフォルダ 775、ファイル 664 が必要になることがあるとしています。
# 所有者は deploy、グループは www-data にする
sudo chown -R deploy:www-data /var/www/html
# アップロード用のフォルダだけ、グループに書き込みを許可する
sudo find /var/www/html/wp-content/uploads -type d -exec chmod 775 {} +
sudo find /var/www/html/wp-content/uploads -type f -exec chmod 664 {} +
この方法では、管理画面からのプラグイン・テーマ・本体の更新はできない(または「接続情報」の画面が出る)ため、更新は WP-CLI などで deploy ユーザーとして行います。どちらを選ぶかは、管理画面での更新の手軽さと、改ざんされたときの被害範囲のどちらを優先するかで決めます。
ステップ4:wp-config.php を絞る
wp-config.php にはデータベースのパスワードが書かれているため、ほかのユーザーに読まれないようにします。ただし、PHP が読めない値にすると、サイトが表示されなくなります。
| 状況 | 設定例 |
|---|---|
| PHP がファイルの所有者と同じユーザーで動く(レンタルサーバーなど) | 600(所有者のみ読み書き)、または 400/440(読み取りのみ) |
所有者は作業用ユーザー、PHP はグループ(www-data)として読む |
640(所有者は読み書き、グループは読み取りのみ) |
# PHP が所有者と同じユーザーで動く場合
chmod 600 /var/www/html/wp-config.php
# 所有者 deploy・グループ www-data で運用している場合
chmod 640 /var/www/html/wp-config.php
設定したら、サイトのトップページと管理画面が表示されることを確認してください。表示されない場合は 644 に戻して、所有者とグループを見直します。
ステップ5:FTPで個別に設定する
SSH が使えない場合は、FTP クライアントで設定します。FileZilla の例です。
- サーバーに接続し、WordPress のフォルダを開く
- フォルダを右クリックして、属性(パーミッション)を変更する項目を選ぶ
- 数値に
755を入力し、サブディレクトリにも適用する項目(英語表示では「Recurse into subdirectories」)にチェックを入れ、適用対象を「ディレクトリのみ」にして「OK」 - もう一度同じフォルダで画面を開き、数値に
644を入力、サブディレクトリにも適用し、適用対象を「ファイルのみ」にして「OK」
FTP では所有者は変更できません。所有者が原因の場合は、サーバー会社の管理画面やサポートで対応します。
症状ごとの確認ポイント
| 症状 | 確認すること |
|---|---|
| 画像をアップロードできない | wp-content/uploads とその中のフォルダの所有者が、PHP の実行ユーザーと一致しているか。容量制限やディスクの空きも確認 |
| プラグインの更新で「接続情報」が出る | WordPress のファイルの所有者と PHP の実行ユーザーが一致しているか |
| 403 エラー | フォルダが 700 などで、Web サーバーが中に入れなくなっていないか。.htaccess の記述も確認 |
| 真っ白な画面・500 エラー | wp-config.php や PHP ファイルを PHP が読めない値(例 000、所有者違いの 600)にしていないか |
777 にしない理由
777 は、サーバー上のすべてのユーザーとプロセスが書き込めることを意味します。公式ドキュメントでも、Web サーバーの別プロセスが乗っ取られた場合などにファイルを書き換えられる危険があるとして、使わないよう案内しています。プラグインの説明に 777 が求められている場合は、作者やサーバー会社に別の方法がないか確認してください。所有者を合わせれば、通常は 755/644 で動きます。
まとめ
- 基本はフォルダ 755、ファイル 644。
findでフォルダとファイルを分けて設定する - 書き込めるかどうかは数字だけでなく、所有者と PHP の実行ユーザーが一致しているかで決まる
- VPS で PHP が
www-dataなどで動く場合は、所有者を合わせるか、グループ書き込み(775/664)を必要なフォルダだけに付ける wp-config.phpは 600 や 640 などに絞るが、PHP が読めることを確認する- 777 は使わない
関連記事: