Staging サイトのファイルパーミッションとオーナーを変更する

一部の Hosting 構成では、WordPress サイトのオーナーとパーミッションが通常とは異なる設定になっています。

たとえば、ご利用の Hosting 構成では、PHP-FPM がユーザーアカウントとして動作する場合があります。その場合、PHP がファイルシステムにアクセスすると、PHP 自身の名前でファイルが作成されます。一方で WordPress には別のパーミッションが必要となることがあり、ギャラリーにアップロードされた画像がウェブサーバー名で作成されてしまいます。そのため、Staging サイトを作成した後にパーミッションエラーが発生することがあります。

WP Staging は、ファイルに対して 755、フォルダに対して 644 という WordPress 既定のパーミッションで Staging サイトを作成します。オーナーは Staging サイトを作成した PHP プロセスのユーザーです。

この問題を解消するには、以下の関数とフィルターを使い、Staging サイト作成後にそのオーナーとパーミッションを変更できます。

PHP
<?php

function changePermissionsAndOwner() {

$directory = '/path/to/your/directory';
$permissions = 0755;
$owner = 'username';
$group = 'groupname';

    // Check if the path is a directory
    if (is_dir($path)) {
        // Create a RecursiveDirectoryIterator object
        $directoryIterator = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS);
        // Create a RecursiveIteratorIterator object
        $iterator = new RecursiveIteratorIterator($directoryIterator, RecursiveIteratorIterator::SELF_FIRST);

        // Iterate through each file and directory in the tree
        foreach ($iterator as $item) {
            // Change the permissions of the current item
            chmod($item, $permissions);
            // Change the owner and group of the current item
            chown($item, $owner);
            chgrp($item, $group);
        }

        // Change the permissions of the root directory
        chmod($path, $permissions);
        // Change the owner and group of the root directory
        chown($path, $owner);
        chgrp($path, $group);
    } else {
        echo "The path is not a directory.";
    }
}

add_action('wpstg.clone_first_run', 'changePermissionsAndOwner', 10);

このコードは Staging サイトへの最初のログイン時に実行され、すべてのファイルを対応するパーミッションへ変更します。

Updated on 5月 23, 2026

Rene Hermenau

著者: Rene Hermenau

About the author: René Hermenau is the founder of WP STAGING. He works on WordPress backups, staging, migrations, database handling, and safe deployment workflows.